我最初发布了一个问题,NHibernate为一个集合发出了一个额外的查询,该集合作为ReadOnlyCollection公开,并在FluentNhibernate中映射为“nosetter”或“ReadOnlyPropertyThroughCamelCaseField”。
我的代码中没有直接访问该属性,但NHibernate认为存在更改。当我将访问策略更改为“field” - 或者“流利的nhibernate”中的“CamelCaseField”时,它解决了这个问题。
所以我的问题是,NHibernate如何检测集合变化的两种访问策略有什么区别?
由于 本
答案 0 :(得分:0)
字段:强> NHibernate将直接访问该字段。 NHibernate使用name属性的值作为字段的名称。当属性的getter和setter包含NHibernate填充或读取对象时不希望发生的额外操作时,可以使用此方法。如果您希望该属性的名称而不是该字段是您的API使用者与HQL一起使用的名称,则需要一个命名策略。
<强> nosetter:强> NHibernate将在设置值时直接访问该字段,并在获取值时使用该属性。当属性仅公开get访问器时,可以使用此方法,因为API的使用者无法直接更改值。命名策略是必需的,因为NHibernate使用name属性的值作为属性名称,需要告诉该字段的名称是什么。