发现MonoRail+ActiveRecord的一个bug

本文探讨了在ActiveRecord中使用PropertyAccess.NosetterLowercase特性的方式,并解释了此特性如何影响NHibernate中的属性设置过程。此外还提及了一个与此特性相关的bug及修复情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在ActiveRecord里可以写这样的代码:
        [PrimaryKey(Access = PropertyAccess.NosetterLowercase)]
        
public int Id
        {
            
get { return id; }
        }
PropertyAccess.NosetterLowercase告诉ActiveRecord这个属性没有setter,想要设置它的值时应该直接设置同名(小写)的字段。
事实上ActiveRecord对这个Attribute是不做任何处理的,只是传递给NHibernate。

这就导致了,在使用MonoRail的DataBind时,对应于Id的值不会被绑定到对象上,从而使Update失败( Could not save YourClassName. Unexpected row count: 0; expected: 1)。

2007-04-16:SVN上最新的版本已经修复了这个bug,他们的反应速度还真快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值