【问题标题】:Entity Framework 4 update实体框架 4 更新
【发布时间】:2018-11-18 22:16:25
【问题描述】:

我写了一个更新方法,如下所示:

public CANDIDATE UpdateCandidateDetails(CANDIDATE objCandidate)
{
    using (var context = new URMSNEWEntities())
    {
        context.CANDIDATES.Attach(objCandidate);
        context.ObjectStateManager.ChangeObjectState(objCandidate, System.Data.EntityState.Modified);
        context.SaveChanges();
        return objCandidate;
    }
}

但更新时出现以下错误:

一个实体对象不能被多个 IEntityChangeTracker 实例引用。

【问题讨论】:

  • objCandidate 附加到另一个上下文。

标签: entity-framework


【解决方案1】:

正如 Gert 在 cmets 中提到的,错误告诉您您的对象 objCandidate 已被另一个上下文跟踪。

您不能附加已附加的对象,也不应该附加,因为这两个上下文很可能处于冲突状态。

理论上,您可以在对象当前所属的上下文中 Detach 您的对象,但这可能会导致额外的复杂情况。

要追踪对象的附加位置(以及它附加到的上下文),您必须查看您的代码到创建(或附加)objCandidate 的位置,会有另一个已实例化的上下文,从中获取objCandidate 对象。

该问题的最佳解决方案可能涉及在您的应用程序的某些部分共享一个公共上下文。

在此站点中搜索 UnitOfWorkRepository 模式,以获取有关如何管理上下文的一些极好的信息/建议。例如entity framework + repository + unit or work question

祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多