1
可以說我有以下兩個實體:EF 4刪除相關項目
Item
int Id
ICollection<ChildItem> ChildItems
ChildItem
int Id
Item ParentItem
(上刪除級聯從項目到ChildItem設定,無論是在EF設計和SQL服務器上) ,我有一些像這樣的代碼:
Item newItem = new Item();
ChildItem child1 = new ChildItem();
ChildItem child2 = new ChildItem();
newItem.ChildItems.Add(child1);
newItem.ChildItems.Add(child2);
myContext.Items.AddObject(newItem);
// Then much, much further down the line
myContext.Items.DeleteObject(newItem);
現在,沒有EF自動找出它也有刪除的子項,或者我應該刪除他們自己?
事情是,我的刪除代碼工作正常,如果我添加一個SaveChanges()在DeleteObject之前,但如果我試圖先刪除,然後保存更改,我傾向於得到一些「無法確定主要結束關聯「 - 概念。現在,我正在用EF 4試圖這樣做。對於EF5,我只是使用context.Local -property來代替,但現在我不太確定EF 4用實體狀態Added添加的對象。
是的,很好的發現,我完全忘了解釋過程的一部分。事情是,我的實際案例包含舊的(從數據庫中讀取)和新的(最近創建的,尚未保存的)實體。但即便如此,只需將所有新創建的項目保存在一個單獨的列表中,我可以從中刪除它們,然後在保存之前瀏覽列表看起來確實是一個合理的選項。謝謝! – bobblez