2010-12-17 49 views
0

爲什麼我需要爲孩子和家長添加關係?如何添加關係(nhibernate)

 
Child child = Session.Get(1); 
Parent parent = Session.Load(1); 
parent.Children.Add(child); 
child.Parent = parent; 

它完全沒有parent.Children.Add(孩子),如果使用逆=真,我不需要Children集合在當前會話(每個Web請求會話)。你是否總是爲孩子和家長添加關係?

回答

2

設置child.Parent = parent就足以堅持這種關係。

但是,如果您未將孩子添加到集合中,您將無法利用級聯,因此您必須明確地堅持孩子。另外,如果你沒有設置其中一個方面,你將會有一個不一致的內存模型(因爲除非你重新加載它,否則孩子不會被添加到集合中)。

2

我希望我能正確理解你。

class Parent { List Children {get;set;} class Child { Parent Parent {get;set;}

ANS1。在這種情況下,Inverse告訴nhibernate框架將[Parent-Child]關係的控制機制留給Child(主要是關於哪個對象負責刪除/更新Child)。在兒童屬性上具有逆向屬性子對其自身負責,否則父負責刪除子對象。

ANS2。在大多數情況下,您不需要兩個屬性(Children,Parent)(如果您在Children中指定inverse = true,則需要它們)。它只取決於你想得到的功能。

這是否簡單回答你的問題?