问题描述
|
我最初发布了一个问题,其中NHibernate对一个集合发出另一个查询,该集合公开为ReadOnlyCollection并在FluentNhibernate中映射为\“ nosetter \”或\“ ReadOnlyPropertyThroughCamelCaseField \”。
该属性未在我的代码中直接访问,但NHibernate认为有更改。当我将语言的访问策略更改为\“ field \”或\“ CamelCaseField \”时,它解决了该问题。
所以我的问题是,两种访问策略在NHibernate如何检测集合更改方面有什么区别?
谢谢
本
解决方法
领域:
NHibernate将直接访问该字段。 NHibernate使用name属性的值作为字段的名称。当属性的getter和setter包含您在NHibernate填充或读取对象时不希望发生的其他操作时,可以使用此方法。如果您希望属性的名称而不是字段是API的使用者与HQL一起使用的名称,则需要一种命名策略。
鼻梁:
NHibernate会在设置值时直接访问该字段,并在获取值时使用属性。当属性仅公开get访问器时可以使用此方法,因为API的使用者不能直接更改该值。因为NHibernate使用name属性的值作为属性名称,并且需要告知字段名称是什么,所以需要一种命名策略。
来源:http://nhibernate.info/doc/nh/en/index.html