【发布时间】: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