C# 调用方法时,entity对象不能被IEntityChangeTracker的多个实例引用

C# 调用方法时,entity对象不能被IEntityChangeTracker的多个实例引用,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我试图创建一个方法来更改给定对象的给定字段。我认为我的代码是好的,除了当我把代码分离成不同文件中的一个方法时,我得到了这个错误。 我的控制器操作如下所示: public ActionResult AddSchedule(Schedule schedule){ //some code db.Schedules.Add(schedule); db.SaveChanges(); db.Entry(schedule).State = EntityState.Deta

我试图创建一个方法来更改给定对象的给定字段。我认为我的代码是好的,除了当我把代码分离成不同文件中的一个方法时,我得到了这个错误。 我的控制器操作如下所示:

public ActionResult AddSchedule(Schedule schedule){
    //some code  
    db.Schedules.Add(schedule);
    db.SaveChanges();

    db.Entry(schedule).State = EntityState.Detached;
    Request request = db.Requests.SingleOrDefault(x => x.RequestId == schedule.RequestId);
    TransportDbQuery.SetStatus(request, "RequestStatus", RequestStatus.Approved);
    //some code
}
设置状态方法

public static void SetStatus(object obj, string statusPropertyName, object value){
            using (TransportDbContext db = new TransportDbContext())
            {
                obj.GetType().GetProperty(statusPropertyName).SetValue(obj, value);
                db.Entry(obj).State = EntityState.Modified;
                db.SaveChanges();
            }
        }
db.Entryobj.State=EntityState.Modified时触发错误;线 正如您所看到的,我尝试分离上一个对象,但仍然会产生错误。你知道怎么解决这个问题吗?
非常感谢。

您是否在using语句中包装public ActionResult AddScheduleSchedule中的db调用?如果没有,它将不会被处理,从而导致多实例错误。您没有分离您试图设置其状态的请求对象。Gert,我想我可能必须附加它。在更改状态之前,我不使用任何请求对象。我还是要拆开它?为什么?谢谢,我添加了db.Entryrequest.State=EntityState.Detached;它成功了。但我认为这是EF的一个弱点。