3
我升级形式NHibernate的3.2 NHibernate的3.3,我在我的领域类中定义一个像这样的很多虚拟成员:为什么nhibernate 3.3不允许在ICollection上使用private setter?
public virtual ICollection<Movie> Movies { get; private set; }
该停止了升级后的工作,我得到这个异常:
Following types may not be used as proxies:
ClassName: method set_Movies should be 'public/protected virtual' or 'protected internal virtual'
现在我设法通过将setter更改为protected来解决问题,但我也惊讶于将Collection属性更改为仅支持readonly的技巧。
所以我有两个问题:
为什么NHibernate的决定禁止使用私人setter方法呢?它看起来不像从.net中的技术限制,因为它之前被支持,我不应该从设计的角度来做,因为我们应该使用Collection Remove(),Add()等方法来操作但为什么允许受保护的公共设置者呢?
为什么(以及如何)使用readonly属性和后台工作?
谢谢Firo ..你有一个想法之前他们使用什么,他们现在使用什么? – kabaros
Fluent-NHibernates defalut是城堡动态代理,集成(与ILmerge)是LinFu动态代理。但我不知道为什么林福有这种限制/设计选择。你仍然可以使用城堡与NHibernates适配器,但它不再支持 – Firo
thx @DiegoMijelshon有用的信息。 – Firo