2010-10-19 65 views
1

我有一個標準的父 - 子(1:許多)relationalship,配置爲使用功能NHibernate:(流利)NHibernate的:迫使外國鍵爲null上刪除

在父方:

HasMany(x => x.Items).Inverse().Cascade.All(); 

而對孩子的一面:

Map(x => x.ItemCategory).Nullable().Index("idx_item_category").Not.LazyLoad() 

(編輯迴應epitka的評論:)

記錄是通過調用

session.Delete(item_category) 

這是在交易完成的唯一操作刪除。

(完編輯)

目前,當我刪除I​​temCategory記錄它級聯刪除對所有項目,這似乎是工作根據文檔預期。

我想要的是當ItemCategory記錄被刪除時,Item.ItemCategory自動設置爲空

我似乎只能完全關閉級聯,導致數據庫破損(項目引用缺失的類別)。所以,目前我必須手動執行此操作,這比我想要的更容易出錯。

是否可以配置此行爲?
使用Session.delete(item_category)

+0

你是怎麼刪除它的?你是從集合中刪除它,發出HQL刪除,還是其他的東西。向我們顯示代碼... – epitka 2010-10-19 20:20:38

回答

1

得到控制而這是不可能做到這一點開箱即用,你也許可以實現一個IPreDeleteEventListener將觸發一個HQL更新設置項ItemCategory爲null。