hmi*_*aya 29 entity-relationship entity-framework-4
我正在使用EF,当我这样做时:
foreach (var reg in detail.Regs)
{
this.db.Regs.DeleteObject(reg);
}
Run Code Online (Sandbox Code Playgroud)
我明白了:
Collection was modified; enumeration operation may not execute.
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么???
Mor*_*avi 80
原因是当您从上下文中删除对象时,EF会主动更新Regs导航属性计数,这意味着在foreach循环期间正在更改detail.Regs集合,这总是会导致您获得异常.
您可以创建一个新的集合对象,并像这样继续删除它:
foreach (var reg in detail.Regs.ToList())
{
this.db.Regs.DeleteObject(reg);
}
Run Code Online (Sandbox Code Playgroud)
或者甚至可以使用LINQ ForEach方法使其更清洁:
detail.Regs.ToList().ForEach(r => db.Regs.DeleteObject(r));
Run Code Online (Sandbox Code Playgroud)