【问题标题】:Delete child objects in Entity Framework删除实体框架中的子对象
【发布时间】:2011-05-08 05:43:11
【问题描述】:

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

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

我明白了:

Collection was modified; enumeration operation may not execute.

我在这里做错了什么???

【问题讨论】:

    标签: entity-framework-4 entity-relationship


    【解决方案1】:

    原因是当您从上下文中删除对象时,EF 会主动更新 Regs 导航属性计数,这意味着 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));
    

    【讨论】:

    • 从数据库中获取所有记录只是为了将它们删除不是吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多