2011-05-26 74 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