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

时间:2016-01-12 11:29:02

标签: c# entity-framework

我遵循本教程:

EF 6 disconnected scenario

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

但我总是得到一个InvalidOperationException,因为' foo'在调用ctx.SaveChanges();

之前从item.Foos中删除

1 个答案:

答案 0 :(得分:3)

在迭代该列表时,您无法从列表中删除。 ToList将解决问题,因为您将迭代"复制"而不是列表本身。

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