Nhibernate nosetter和现场访问策略之间的差异

Nhibernate nosetter和现场访问策略之间的差异,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我最初发布了一个问题,其中NHibernate对一个集合发出了额外的查询,该集合在FluentNhibernate中作为ReadOnlyCollection公开,并映射为“nosetter”或“ReadOnlyPropertyThroughCamelCaseField” 在我的代码中没有直接访问该属性,但NHibernate认为发生了变化。当我在fluent nhibernate中将访问策略更改为“field”或“CamelCaseField”时,它解决了这个问题 所以我的问题是,两种访问策略在

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

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

所以我的问题是,两种访问策略在NHibernate如何检测集合更改方面有什么区别

谢谢 Ben

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

nosetter: NHibernate将在设置值时直接访问该字段,并在获取值时使用该属性。当属性仅公开get访问器时,可以使用此选项,因为API的使用者不能直接更改值。需要一个命名策略,因为NHibernate使用name属性的值作为属性名,并且需要告知字段的名称

资料来源: