我正在我的项目中开发一个 Controller 。我正在尝试执行以下操作:
string role = "something";
var newRole = new IdentityRole();
newRole = _DbContext.Roles.Where(r => r.Name == role).FirstOrDefault().;
user.Roles.Add(newRole);
显然,user.Roles.Add() 只接受一个IdentityUserRole 作为参数,而newRole 是IdentityRole 类型。我怎样才能从一个转换成另一个?是否有其他方法可以完成我想做的事情?
显式转换不起作用。
考虑使用 UserManager
通常,您会使用 AddToRoleAsync()
方法来自 UserManager
对象来处理为用户分配角色,而不是直接在用户对象本身上添加角色。
// Example of instantiating the User Manager
private readonly UserManager<ApplicationUser> _userManager;
public AccountController(UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}
// Example of adding a user to a given role
public void AddUserToRole(string userId, string role)
{
var user = _userManager.FindByIdAsync(userId);
if (user != null)
{
await _userManager.AddToRoleAsync(user, role);
}
}
UserManager 类负责确保根据需要正确创建、更新和保留有关用户的任何关系或信息,因此通常首选将这些类型的职责委派给它。
关于直接转化
关于直接转换,您可以使用类似于 DavidG's response 的方法并简单地使用来自用户的 Id 和角色来构建一个对象并将其添加到用户。
我是一名优秀的程序员,十分优秀!