NHibernate为什么要求自动属性具有“受保护的内部”可见性?

问题描述

| 过去可以使用NHibernate使用私有设置器来映射自动属性,但是从3.2版开始,情况不再如此(不是不替换实体验证器),请参见NH dev讨论。 我理解“ 0”的要求,但是为什么要“ 1”?这样会破坏封装,并且感觉很脏。 唯一的选择是回到支持领域吗? 更新:令人尴尬,但事实如此,事实证明不需要ѭ1。因此,这是在回退到后备字段或使用受保护的设置器之间避免在构造函数中设置值或面临难以跟踪错误的风险之间的折衷。感谢fabio和@Nexus指出我的错误。     

解决方法

迈克尔
public string Foo { get; protected set; }
应该仍然可能,开发人员讨论is4ѭ可能会在使用惰性属性时导致错误。     ,NHibernate很脏。它使用反射来访问属性和字段。 您甚至可以将
private
属性和字段映射为数据点。 NHibernate完全忽略了它需要访问的元素的可见性。     ,
public class Class{

    public string Foo { get; private set; }

}

Property(class=> class.Foo);
然后,您需要在配置中关闭代理验证:
Config.Proxy(p => {p.Validation = false});