尝试 link 当前已验证用户的对象时出现异常
Exception when attempting to link an object to the currently authenticated user
我目前有一个 ASP.NET Web Api 2 应用程序,出于这个问题的目的,它管理着 'Items'。 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 和用户已被正确找到,但在设置所有者 属性 后添加项目仍然存在问题。
A first chance exception of type 'System.InvalidOperationException'
occurred in EntityFramework.dll
Additional information: An entity object cannot be referenced by
multiple instances of IEntityChangeTracker.
问题是您试图使用两个不同的上下文来跟踪同一个实体,但这行不通。也许你应该查看你的代码,看看你的哪个实体被两个上下文跟踪,这是可能的,因为你使用全局变量 (db
) 作为对你的上下文的引用。
我目前有一个 ASP.NET Web Api 2 应用程序,出于这个问题的目的,它管理着 'Items'。 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 和用户已被正确找到,但在设置所有者 属性 后添加项目仍然存在问题。
A first chance exception of type 'System.InvalidOperationException' occurred in EntityFramework.dll
Additional information: An entity object cannot be referenced by multiple instances of IEntityChangeTracker.
问题是您试图使用两个不同的上下文来跟踪同一个实体,但这行不通。也许你应该查看你的代码,看看你的哪个实体被两个上下文跟踪,这是可能的,因为你使用全局变量 (db
) 作为对你的上下文的引用。