在 EF6 中保存之前丢弃无效实体

Discard invalid entities before save in EF6

我在此 link 中使用了可接受的解决方案 与OP类似的问题。

在 Entity Framewok 6 中,我得到 System.InvalidOperationException:'The entity type DbEntityEntry is not part of the model for the current context.'

我该如何解决这个问题?我的初始设置中是否必须包含某些内容?

我的代码是这样的

            Console.WriteLine("Removing Bad Records");
            foreach (var error in context.GetValidationErrors())
            {
                context.Entry(error.Entry).State = EntityState.Detached;
            }

            Console.WriteLine("Saving Changes");
            context.SaveChanges();
  • context.Entry( Object ) returns 指定 entity 对象的 DbEntityEntry<> 对象。
  • error.Entry 已经是一个DbEntityEntry<>对象。它不是 实体 对象。

因此将您的代码更改为(在 error.Entry 上设置 State):

Console.WriteLine("Removing Bad Records");
foreach( var error in context.GetValidationErrors() )
{
    error.Entry.State = EntityState.Detached;
}

Console.WriteLine("Saving Changes");
context.SaveChanges();

...或者这个(将实际的 entity 对象传递给 dbContext.Entry(Object)):

Console.WriteLine("Removing Bad Records");
foreach( var error in context.GetValidationErrors() )
{
    var entity = error.Entry.Entity;
    context.Entry( entity ).State = EntityState.Detached;
}

Console.WriteLine("Saving Changes");
context.SaveChanges();