EF 6在标记为已删除时从集合中删除对象

本文关键字:删除 对象 集合 记为 EF | 更新日期: 2023-09-27 18:29:54

我遵循本教程:

EF 6断开场景

    foreach (var foo in item.Foos)
    {
        if (foo.State == PocoState.Deleted)
        {
            ctx.Entry(foo).State = EntityState.Deleted;
        }
    }
    ctx.SaveChanges();

但我总是得到InvalidOperationException,因为"foo"是从项中删除的。呼叫ctx之前的Foos。SaveChanges();

EF 6在标记为已删除时从集合中删除对象

迭代列表时不能从列表中删除。ToList将解决这个问题,因为您将迭代一个"副本"而不是列表本身。

 foreach (var foo in item.Foos.ToList())
 {
    if (foo.State == PocoState.Deleted)
    {
       ctx.Entry(foo).State = EntityState.Deleted;
    }
 }
 ctx.SaveChanges();