我想在我的MVC .NET CORE應用程序中創建一個頁面,其中用戶可以更改其他用戶的角色。在這一點上,視圖和模型綁定都很好,但是當實際嘗試將角色保存回數據庫時,我收到一個錯誤,指出角色不存在。我的方法是:ASP身份角色不存在錯誤
- 從模型中獲取角色列表。
- 刪除指定用戶的現有角色。
- 使用模型中的列表添加角色。
- 如果發生錯誤,請在交易中完成所有操作。
我在控制器代碼如下:
var user = await _userManager.FindByIdAsync(id);
if (user == null)
{
return View("Error");
}
using (_context.Database.BeginTransaction())
{
var removeResult = await _userManager.RemoveFromRolesAsync(user, await _userManager.GetRolesAsync(user));
if (!removeResult.Succeeded)
{
return View("Error");
}
var addResult = await _userManager.AddToRolesAsync(user, model.MemberRoles);
if (!addResult.Succeeded)
{
return View("Error");
}
}
凡model.MemberRoles
角色作爲List<string>
。奇怪的部分是這個過程在_userManager.RemoveFromRolesAsync
上失敗,即使我將用戶的現有角色直接傳遞給函數。我曾嘗試拋棄UserManager
課程,但是卻沒有運氣。我還驗證了模型中的角色與數據庫中的角色相匹配。有什麼明顯的錯誤會導致失敗嗎?謝謝。
編輯
以下是錯誤我遇到:
InvalidOperationException: Role ADMINISTRATOR does not exist.
Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore`4.<AddToRoleAsync>d__32.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
,這裏是角色在我的數據庫定義:
我想你是對的那有點奇怪。我更新了我的帖子以反映這些更改,但我仍然看到該角色不存在。 –