我有一個實體,我們稱之爲CommonEntity
,它具有在許多其他實體中用作外鍵的主鍵。隨着應用程序的開發,這些鏈接將繼續增長。實體框架:檢查實體的所有外鍵使用關係
我想要一種方法來看看CommonEntity
是否可以安全刪除(即它不被任何其他實體使用)。
我知道我能做到
if(!ce.EntityA.Any() && !ce.EntityB.Any() ... && !ce.EntityN.Any())
{
//Delete
}
,但我希望有一個辦法只有自動檢查所有的關係,因爲我不喜歡有回來的想法,並更改此代碼每次我們添加一個新的關係時手動。也許EF4 +中有些東西我不知道?
我認爲有可能使用事務範圍來嘗試刪除對象,並在對象失敗時將其回滾,但我不確定這種方法是否存在任何不良副作用。
有沒有更好的方法?
編輯:看起來像VS2012已經使用EF5,即使該項目是.Net 4,所以它創建了POCO模型,即使它是從DB生成的。
如果我讓它失敗,它會自動回滾沒有事務範圍的任何成功的級聯嗎? – BenC3
找到答案--SaveChanges()使用一個事務,所以任何失敗都會回滾:http://msdn.microsoft.com/en-us/library/bb336792.aspx – BenC3
如果你讓你的實體保持打開! – bytecode77