删除Entity Framework中的子对象 [英] Delete child objects in Entity Framework

查看:180
本文介绍了删除Entity Framework中的子对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

我得到这个:



集合已修改;

 枚举操作可能无法执行。 

我在这里做错什么???

解决方案

原因是因为当您从上下文中删除对象时,EF会主动更新导航属性计数,这意味着<在 foreach 循环中正在更改



您可以创建一个新的集合对象,并继续删除:

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

即使您可以使用LINQ ForEach 方法:

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


I'm using EF and when I do this:

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

I get this:

Collection was modified; enumeration operation may not execute.

What I'm I doing wrong here???

解决方案

The reason for that is because as you delete the objects from the context, EF is actively update the Regs navigation property count which means the detail.Regs collection is being changed during the foreach loop which always cause the exception you are getting.

You can create a new collection object and keep deleting from it like this:

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

Or even you can make it cleaner by using LINQ ForEach method:

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

这篇关于删除Entity Framework中的子对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆