2011-05-26 78 views
2

我最初发布的一个问题,其中NHibernate发布了一个集合的附加查询,该集合作为ReadOnlyCollection公开,并在FluentNhibernate中映射为“nosetter”或“ReadOnlyPropertyThroughCamelCaseField”。nosetter和字段访问策略之间的NHibernate差异

该属性并未直接在我的代码中访问,但NHibernate认为有变化。当我将访问策略改为流畅的nhibernate的“field” - 或“CamelCaseField”时,它解决了这个问题。

所以我的问题是,两种访问策略在NHibernate如何检测集合的变化之间有什么区别?

感谢 本

回答

0

领域: NHibernate的将直接进入该领域。 NHibernate使用name属性的值作为字段的名称。当属性的getter和setter包含额外的操作时,可以使用它,当NHibernate填充或读取对象时,您不希望发生这些操作。如果您希望属性的名称而不是字段是您的API的使用者使用HQL的内容,那么需要一个命名策略。

nosetter: NHibernate将在设置值时直接访问该字段,并在获取该值时使用该属性。这可以在属性只公开get访问器时使用,因为API的使用者无法直接更改值。命名策略是必需的,因为NHibernate使用name属性的值作为属性名称,并且需要知道该字段的名称是什么。

来源:http://nhibernate.info/doc/nh/en/index.html