2010-11-11 131 views
29

我使用EF和當我這樣做:刪除子在實體框架對象

  foreach (var reg in detail.Regs) 
      { 
       this.db.Regs.DeleteObject(reg); 
      } 

我得到這個:

Collection was modified; enumeration operation may not execute. 

什麼我是我做錯了什麼???

回答

80

的原因是因爲你從上下文中刪除對象,EF正在積極更新的REG導航屬性計數,這意味着detail.Regs的的foreach循環期間收集正在改變總是導致你得到的例外。

您可以創建一個新的集合對象,並保持從中刪除這樣的:

foreach (var reg in detail.Regs.ToList()) 
{ 
    this.db.Regs.DeleteObject(reg); 
} 

甚至可以使用LINQ 的ForEach方法使得清潔:

detail.Regs.ToList().ForEach(r => db.Regs.DeleteObject(r)); 
+0

感謝你這麼很多...喲是明星.... :) – Shaz 2014-02-07 16:25:38

+0

從數據庫中獲取所有記錄只是爲了讓他們刪除不是? – Marco 2015-12-02 18:09:40