Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 4 删除实体框架中的子对象_Entity Framework 4_Entity Relationship - Fatal编程技术网

Entity framework 4 删除实体框架中的子对象

Entity framework 4 删除实体框架中的子对象,entity-framework-4,entity-relationship,Entity Framework 4,Entity Relationship,我正在使用EF,当我这样做时: foreach (var reg in detail.Regs) { this.db.Regs.DeleteObject(reg); } 我明白了: Collection was modified; enumeration operation may not execute. 我在这里做错了什么?原因是,当您从上下文中删除对象时,EF正在主动更新Regs导航

我正在使用EF,当我这样做时:

            foreach (var reg in detail.Regs)
            {
                this.db.Regs.DeleteObject(reg);
            }
我明白了:

Collection was modified; enumeration operation may not execute.

我在这里做错了什么?

原因是,当您从上下文中删除对象时,EF正在主动更新Regs导航属性计数,这意味着详细信息。在foreach循环期间,Regs集合正在更改,这总是会导致出现异常。

您可以创建一个新的集合对象并按如下方式继续从中删除:

foreach (var reg in detail.Regs.ToList())
{
    this.db.Regs.DeleteObject(reg);
}
甚至可以使用LINQ ForEach方法使其更干净:


从数据库中获取所有记录只是为了删除它们不?
detail.Regs.ToList().ForEach(r => db.Regs.DeleteObject(r));