为什么NHibernate需要“;受保护的内部“;汽车特性的可见性
本文关键字:可见性 汽车 受保护 NHibernate 需要 为什么 内部 | 更新日期: 2023-09-27 17:57:45
过去可以使用NHibernate将自动属性与私有setter进行映射,但从3.2版本开始,情况已不再如此(在不替换实体验证器的情况下),请参阅NH-dev讨论。
我理解protected
的要求,但为什么是internal
?这打破了封装,只是感觉很脏。
唯一的选择是回到后场吗?
更新:虽然令人尴尬,但事实证明internal
不是必需的。因此,在返回支持字段或使用受保护的setter与避免在构造函数中设置值或面临难以跟踪的错误风险之间,这是一个悬而未决的问题。感谢Fabio和@Nexus指出我的错误。
Michael,
public string Foo { get; protected set; }
应该仍然是可能的,开发人员讨论的是public string Foo { get; private set; }
,它可能会在使用惰性属性时导致错误。
NHibernate相当脏。它使用反射来访问属性和字段。
您甚至可以将private
属性和字段映射为数据点。
NHibernate完全忽略了它需要访问的元素的可见性。
public class Class{
public string Foo { get; private set; }
}
Property(class=> class.Foo);
然后,您需要在配置中关闭代理验证:
Config.Proxy(p => {p.Validation = false});