我遇到了一個有趣的實體框架問題,並基於我必須用來解決它的代碼,我懷疑我的解決方案不夠理想。我在表A和表B之間有一對多的關係,TableB中的實體具有對錶A的引用。我有,我想同時刪除表A行的所有兒童的情況,我認爲這可以通過簡單地清除集合來實現:實體框架 - 清除子集合
Entity.Children.Clear()
不幸的是,當我試圖挽救由此產生對外變化重點違規。
被添加的關係或 從AssociationSet 'FK_EntityB_EntityA' 刪除。對於基數 約束,還必須添加或刪除相應的「EntityB」 。
我想出的解決方案是通過實體上下文的DeleteObject()手動刪除對象,但我只知道我使用的邏輯是錯誤的。
while (collection.Any())
Entities.DeleteObject(collection.First());
原因之一,事實上,我不得不使用WHERE()循環似乎遠低於理想,但我想這純粹是我的一個語義評估。無論如何,我是如何做錯的,或者是否有更好的方法來清除實體的子實體集合,以便實體框架在所有已刪除的對象上正確調用數據存儲刪除?
這看起來很完美。從部分類中,是否有任何直接(或間接)的上下文路由? – 2010-01-13 17:29:48
是的,有一個間接路線:http://blogs.msdn。com/alexj/archive/2009/06/08/tip-24-how-to-get-the-objectcontext-from-an-entity.aspx – 2010-01-13 17:49:33
幾乎看起來我只是在構建while()循環刪除到我的存儲庫中,以便我可以輕鬆地重用它。我不必擔心解決上下文的問題,並且它適當靈活。儘管如此,我還沒有必要在C#中編寫while()循環很長一段時間,這感覺幾乎是錯誤的。 – 2010-01-13 17:52:27