2010-01-10 63 views
0

我有一個映射定義了父對象有一個子對象的集合。在我的設計中,我希望能夠刪除子對象,而不必從父對象的集合中刪除它們並重新保存父對象。但是,當我嘗試這樣做時,我得到「刪除的對象將在保存時重新創建」錯誤。有沒有辦法來防止這種情況,我可以簡單地刪除子對象,而不用擔心從父對象的集合中刪除它?這感覺就像做了兩倍的工作。理想情況下,我想從NHibernate的角度將父對象的集合視爲只讀對象。NHibernate中的集合可以映射爲只讀嗎?

回答

0

它會幫助你發佈你的映射文件,但它聽起來像你需要添加Inverse=true到集合映射。這意味着子對象負責處理任何保存或更新,而不是父對象。

但是,在數據庫中它的所有模型都是相同的。孩子應該有一個父行ID的列。 NHibernate將根據Inverse屬性創建不同的SQL。我想提供更多的細節,但我也自己學習NHibernate。

0

我相信你唯一需要做的就是將父對象映射文件中的子對象集合設置爲cascade="none"

當然,這也會阻止通過將子對象分配給父集合並更新父對象來保存子對象。如果那是好的,那麼你得到了你的解決方案。