我将 nhibernate 3.2 升级到 nhibernate 3.3,并且在我的域类中定义了很多虚拟成员,如下所示:
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 属性更改为带有支持字段的只读属性。
所以我有两个问题:
为什么 NHibernate 决定禁止使用私有设置器?它看起来不像 .net 的技术限制,因为它以前受支持,我认为从设计的角度来看不应该这样做,因为我们应该使用 Collection Remove()、Add() 等方法来操作但是为什么要允许受保护的和公共的二传手呢?
为什么(以及如何)使用带有支持字段的只读属性?