尝试将对象链接到当前经过身份验证的用户时出现异常

时间:2015-01-09 21:02:30

标签: c# .net entity-framework asp.net-web-api asp.net-identity

我目前有一个ASP.NET Web Api 2应用程序,出于此问题的目的,它管理“项目”。 ASP.NET Identity 2用于为请求提供身份验证,数据由Entity Framework 6提供。

我的目标是将项目的所有者属性自动设置为验证POST请求的用户。下面是目前的代码:

public async Task<IHttpActionResult> PostItem(Item item)
{           
    var userId = User.Identity.GetUserId();
    var user = await UserManager.FindByIdAsync(userId);

    // Set the Owner to the currently authenticated user
    item.Owner = user;

    db.Items.Add(item); // Exception Thrown Here

    await db.SaveChangesAsync();

    ...
}

但是,调用该方法时,会发生以下异常。正确找到当前的userId和user,但在设置了所有者属性后仍然存在添加该项的问题。

  

类型'System.InvalidOperationException'的第一次机会异常   发生在EntityFramework.dll

中      

附加信息:无法引用实体对象   IEntityChangeTracker的多个实例。

1 个答案:

答案 0 :(得分:1)

问题在于您尝试使用两种不同的上下文来跟踪同一实体,而这种情况并不起作用。也许您应该查看代码并查看哪些实体被两个上下文跟踪,因为您使用全局变量(db)作为对上下文的引用,这是可能的。