Entity framework 实体框架4更新

Entity framework 实体框架4更新,entity-framework,Entity Framework,我编写了一个更新方法,如下所示: public CANDIDATE UpdateCandidateDetails(CANDIDATE objCandidate) { using (var context = new URMSNEWEntities()) { context.CANDIDATES.Attach(objCandidate); context.ObjectStateManager.ChangeObjectState(objCandidat

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

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实例引用


正如Gert在评论中提到的,error告诉您您的对象已被另一个上下文跟踪

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

理论上,您可以将对象从当前所属的上下文中分离出来,但这可能会导致额外的复杂性

要跟踪对象的附加位置(以及它附加到的上下文),您必须通过代码查找创建(或附加)您的
objCandidate
的位置,将有另一个已实例化的上下文,您将从中获得
objCandidate
对象

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

在本网站上搜索
UnitOfWork
Repository
模式,以获取有关如何管理上下文的一些优秀信息/建议。e、 g


祝你好运。

objCandidate
附加到另一个上下文。