【问题标题】:Delete a list of items in Entity Framework删除实体框架中的项目列表
【发布时间】:2014-03-14 14:28:50
【问题描述】:

我正在尝试清除实体框架集合中的所有项目,在这种情况下,从盘子中移除所有食物。我如何解决以下问题的任何想法 - 下面的代码会生成错误:

“System.InvalidOperationException”类型的异常发生在 EntityFramework.dll 但未在用户代码中处理

附加信息:实体对象不能被 IEntityChangeTracker 的多个实例。

Plate selPlate = (Plate)Session["selPlate"];

foreach (FoodForPlate f in selPlate.FoodForPlates)
{
    context.Entry(f).State = System.Data.Entity.EntityState.Deleted;
}

context.SaveChanges();

bindstats();

UpdatePanel1.Update();

【问题讨论】:

  • 您遇到此问题是因为 Session["selPlate"] 仍在被您的 DbContext 的另一个实例跟踪,很可能是您最初用来获取数据的那个实例。
  • 对不起,从第二个错误中可以看出。是的,正如 Brian 所说,您可能已经在 DbContext 的另一个实例中跟踪相同的实体。让你在使用另一个上下文之前处理上下文。
  • 您不需要先处理其他上下文。您只需要将实体从中分离,然后附加到新实体。

标签: c# asp.net entity-framework entity-framework-6


【解决方案1】:

Entity Framework 会跟踪您加载的项目,因此它可以检测更改并且您已经加载了其中一些对象。试试:

dbContext.Entry(entity).State = EntityState.Detached;

您也可以尝试禁用对象跟踪,但这取决于您的应用程序要求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    相关资源
    最近更新 更多