【发布时间】:2016-06-22 13:13:13
【问题描述】:
我正在尝试在我的 MVC .NET CORE 应用程序中创建一个页面,用户可以在其中更改其他用户的角色。此时,视图和模型绑定都工作得很好,但是当实际尝试将角色保存回数据库时,我收到一个错误,提示角色不存在。我的做法是这样的:
- 从模型中获取角色列表。
- 删除指定用户的现有角色。
- 使用模型中的列表重新添加角色。
- 如果出现错误,请在事务中执行所有操作。
我在控制器中的代码如下:
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 课程并选择 ef 但没有运气。我还验证了模型中的角色与数据库中的角色匹配。有什么明显的错误会导致失败吗?谢谢。
编辑
这是我遇到的错误:
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 ---
以下是我的数据库中定义的角色:
【问题讨论】:
标签: c# asp.net asp.net-mvc entity-framework .net-core