PasswordSignInAsync导致“无法跟踪实体类型'User'的实例,因为另一个具有键值的实例”为什么?

问题描述 投票:0回答:1

我是,使用ASP NET核心身份登录用户进入他的帐户

但由于某种原因,它开始给我一个例外

InvalidOperationException:无法跟踪实体类型“User”的实例,因为已经跟踪了另一个键值为“{Id:99d1aa12-3f75-497d-a4cc-5d2103c1b042}”的实例。附加现有实体时,请确保仅附加具有给定键值的一个实体实例。

是什么原因造成的?

public async Task<IActionResult> Login(string Login, string Password, string ReturnUrl = "/")
{
    var user = await _context.Users.AsNoTracking().FirstOrDefaultAsync(x => x.UserName == Login);

    if (user == null)
    {
        return View("Error");
    }

    var sign = await _signInManager.PasswordSignInAsync(user, Password, true, true); // here

    if(!sign.Succeeded)
    {
        return View("Error");
    }

    return Redirect(ReturnUrl);
}
c# asp.net-core asp.net-core-mvc entity-framework-core asp.net-core-identity
1个回答
0
投票

你在这里使用AsNoTracking,这就是问题发生的原因。删除它,它将工作只是找到。

另外,在使用之前,请确保您知道AsNoTracking的含义。

干杯

© www.soinside.com 2019 - 2024. All rights reserved.