尝试将对象链接到当前经过身份验证的用户时出现异常
本文关键字:用户 身份验证 异常 经过 对象 链接 | 更新日期: 2023-09-27 18:37:02
我目前有一个 ASP.NET Web Api 2应用程序,出于此问题的目的,它管理"项目"。 ASP.NET 标识 2 用于为请求提供身份验证,数据由实体框架 6 传递。
我的目标是将项目的 Owner 属性自动设置为对 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 和用户,但在设置其所有者属性后,添加项仍然存在问题。
类型为"System.InvalidOperationException"的第一次机会异常 发生在实体框架中.dll
其他信息:实体对象不能由 引用 IEntityChangeTracker 的多个实例。
问题是您尝试使用两个不同的上下文跟踪同一实体,但这不起作用。 也许你应该查看你的代码,看看你的哪个实体被两个上下文跟踪,这是可能的,因为你使用全局变量(db
)作为对上下文的引用。