2017-06-14 125 views
-1

雖然我的工作我已經看到了這條線的NHibernate映射NHibernate中的反向屬性和只讀屬性在做什麼?

HasMany(entity => entity.Tasks).KeyColumn("APPLICATION_ID").Cascade.AllDeleteOrphan().ReadOnly().Inverse(); 

這是我第一次我看到有人使用逆和只讀屬性,所以請任何人都可以解釋他們給我的一個項目。

+2

https://stackoverflow.com/questions/713637/inverse-attribute-in-nhibernate –

+0

[NHibernate反向屬性]的可能重複(https://stackoverflow.com/questions/713637/inverse-attribute- in-nhibernate) –

+0

'inverse'背後的理由在[NHibernate參考](http://nhibernate.info/doc/nhibernate-reference/collections.html#collections-bidirectional)中有進一步記載,它是雙向關聯。而'Readonly'是'mutable =「false」'的簡寫形式,如[在這裏]解釋的(http://notherdev.blogspot.fr/2012/01/mapping-by-code-set-and-bag.html) 。看[問],你應該在問之前做一些研究。 –

回答

0

你可以找到反here

TLDR的詳細說明;從鏈接

  • 反是一個布爾屬性,無論集合的角色,可以在收集放 映射(即在一個一對多, 許多一對多等),並在加入映射。

  • 我們不能對其他關係類型進行反轉,比如多對一或者一對一。

  • 默認情況下,inverse設置爲false。
  • 逆向對單向關係沒有多大意義,它只能用於雙向關係。
  • 一般建議是在每個雙向關係的一側使用inverse =「true」。
  • 當我們不設置逆時,NHProf會抱怨多餘的更新。

link對於只讀

TLDR;

除了某些屬性和屬性與映射名稱本身的命名不同之外,唯一的區別是FNH中的ReadOnly方法。 這只是設置.Not.Insert()和.Not.Update()的快捷方式。

+0

集合映射中沒有'update'或'insert'屬性。對於集合,Fluent'ReadOnly'是'mutable =「false」'的簡寫。 –