NHITEnate与nosetter和字段访问策略之间的区别

时间:2011-05-26 17:20:49

标签: nhibernate fluent-nhibernate

我最初发布了一个问题,NHibernate为一个集合发出了一个额外的查询,该集合作为ReadOnlyCollection公开,并在FluentNhibernate中映射为“nosetter”或“ReadOnlyPropertyThroughCamelCaseField”。

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

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

由于 本

1 个答案:

答案 0 :(得分:0)

字段: NHibernate将直接访问该字段。 NHibernate使用name属性的值作为字段的名称。当属性的getter和setter包含NHibernate填充或读取对象时不希望发生的额外操作时,可以使用此方法。如果您希望该属性的名称而不是该字段是您的API使用者与HQL一起使用的名称,则需要一个命名策略。

<强> nosetter: NHibernate将在设置值时直接访问该字段,并在获取值时使用该属性。当属性仅公开get访问器时,可以使用此方法,因为API的使用者无法直接更改值。命名策略是必需的,因为NHibernate使用name属性的值作为属性名称,需要告诉该字段的名称是什么。

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