2017-11-24 14 views
0

更新が存在していますが、エラーが表示されています。 InvalidOperationExceptionがAspnetコアアイデンティティーロール更新エラー

コード

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"); 
    } 

エラー:エンティティタイプ 'IdentityRole' のインスタンスを追跡することができないので、{ 'ID'}のために同じキー値を持つ別のインスタンス既に追跡されています。既存のエンティティをアタッチする場合は、指定されたキー値を持つエンティティインスタンスが1つだけアタッチされていることを確認します。競合するキー値を確認するには、 'DbContextOptionsBuilder.EnableSensitiveDataLogging'を使用することを検討してください。 Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IdentityMap.Add(処理鍵キー、InternalEntityEntryエントリ)が

答えて

1

は私は、その作業のようなコードを変更したが、それは奇妙であり、iは、自動IdentityRole正規化された名前の列を変更する名前を変更するとき。

var role = await _roleManager.FindByIdAsync(IdentityRole.Id); 
      role.Name = IdentityRole.Name; 
      await _roleManager.UpdateAsync(role); 

私はそこenter link description here

を見つけました