2010-11-07 76 views
0

問題是:如何編寫約定,防止刪除實體引用,如果它從類型Root繼承?流利NHibernate級聯刪除約定的聚合根


我使用流利的nhibernate和它的自動映射功能。默認打開級聯刪除。

一切都非常酷,直到我終於遇到了情況,當我需要實際刪除引用另一個的聚合根。

我得到了根UserApplicationUser寄存器Applications。如果它是錯誤登記的,那麼UserAdmin角色可以刪除它(我很確定我不會需要該數據)的時間間隔很小。

User刪除Application,由於級聯刪除,nhibernate刪除User本身(有什麼諷刺的...)。


我不確定如何指定SaveUpdate級聯僅供應用程序 - >用戶協會:

alt text


的伎倆:

m.References(x=>x.RegisteredBy).Cascade.SaveUpdate(); //RegisteredBy.Type==User 

另外,告訴fnh在哪裏尋找替代物:

var m=new AutoPersistenceModel(storeCfg); 
m.UseOverridesFromAssembly(assembly); 

回答

1

您可以覆蓋應用程序 - >用戶關聯的級聯行爲。您需要設置SaveUpdate()而不是all-delete-orphan。 爲此,您需要執行IAutomappingOverride<Application>

+0

我有點困惑了。添加圖片到我的問題。 – 2010-11-07 14:45:38

+0

你解決了一個問題嗎? – Sly 2010-11-08 09:28:32