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

本文关键字:用户 身份验证 异常 经过 对象 链接 | 更新日期: 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)作为对上下文的引用。