Aspnet核心身份角色更新错误

时间:2017-11-24 17:30:22

标签: .net-core asp.net-identity

我正在尝试更新存在角色,但我收到错误。

代码

private readonly RoleManager<IdentityRole> _roleManager;

    public EditModel(RoleManager<IdentityRole> roleManager)
    {
        _roleManager = roleManager;
    }

    [BindProperty]
    public IdentityRole IdentityRole { get; set; }

    public async Task<IActionResult> OnGetAsync(string id)
    {
        if (id == null)
        {
            return NotFound();
        }

        IdentityRole = await _roleManager.FindByIdAsync(id);

        if (IdentityRole == null)
        {
            return NotFound();
        }
        return Page();
    }

    public async Task<IActionResult> OnPostAsync()
    {
        if (!ModelState.IsValid)
        {
            return Page();
        }

        try
        {
            await _roleManager.UpdateAsync(IdentityRole);//Error is occuring here.
        }
        catch (DbUpdateConcurrencyException)
        {

        }

        return RedirectToPage("./Index");
    }

错误

  

InvalidOperationException:无法跟踪实体类型“IdentityRole”的实例,因为已经跟踪了另一个具有{'Id'}键值的实例。附加现有实体时,请确保仅附加具有给定键值的一个实体实例。考虑使用'DbContextOptionsBuilder.EnableSensitiveDataLogging'来查看冲突的键值。   Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IdentityMap.Add(TKey key,InternalEntityEntry entry)

1 个答案:

答案 0 :(得分:1)

我更改了代码和它的工作,但这很奇怪,当我更改名称时,会更改自动IdentityRole规范化名称列。

changeAction(obj) {
        //your logic here
}

我找到enter link description here