1
我有父/子關係,和孩子有複合IDNHibernate的 - 與合併集合
家長
<id name="Id" type="Int32">
<generator class="identity" />
</id>
<set name="Children" table="CTable" cascade="all-delete-orphan" inverse="true" lazy="false" >
<key column="ParentId"/>
<one-to-many class="ChildrenClass"/>
</set>
兒童
<composite-id unsaved-value="none">
<key-property name="ParentId"/>
<key-property name="ChildId"/>
</composite-id>
我想要什麼的問題: 1)獲取父從DB關閉會話,將Parent從服務傳遞給客戶端 2)當Parent從客戶端返回時,將其及其所有子項保存在數據庫中,新會話
在步驟2中,我打電話給 var merged = Session.Merge(product);
我使用合併(),因爲它似乎使NHib處理兒童集合添加/刪除元素的唯一途徑。但NHibernate的重置所有ID-S在新增加的孩子,所以我有一個的ParentId == 0新的兒童和ChildId == 0.所以問題是 - 如何告訴NHibernate保留在Merge()中傳遞的實體的ID?請幫助。
感謝您的回答!如果我在Parent中添加Child引用,如何仍然可以在父級中維護孩子的集合?當Parent.Children和Child.Parent引用都存在時,它會導致StackOverflowException(顯然)。我希望在父項中有孩子的集合,以便可以瀏覽它們。是否有可能? – Dmitry 2010-06-21 06:51:07
「顯然」?你錯了。 NHibernate完全支持雙向關係。我建議你先閱讀文檔。 – 2010-06-21 11:43:13
迭戈,我設法讓它工作,不知道它爲什麼沒有在第一次。謝謝! – Dmitry 2010-06-24 10:50:22