C# 如何从IdentityUserRole转换为IdentityRole(ASP.NET核心)
我正在我的项目中使用一个控制器。我正在努力做到以下几点:C# 如何从IdentityUserRole转换为IdentityRole(ASP.NET核心),c#,asp.net,asp.net-core,C#,Asp.net,Asp.net Core,我正在我的项目中使用一个控制器。我正在努力做到以下几点: 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的类型为Id
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 通常,您将使用“来自对象”的方法来处理为用户分配角色,而不是直接将角色添加到用户对象本身
// 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);
}
}
//实例化用户管理器的示例
private readonly UserManager,只需使用来自用户和角色的Id来构建一个对象并将其添加到用户。存在IdentityUserRole
对象以将用户链接到角色,您只需创建它的新实例。您还需要添加角色的ID,例如:
var roleName = "something";
var role = _DbContext.Roles.Single(r => r.Name == roleName);
var userRole = new IdentityUserRole
{
UserId = user.Id,
RoleId = role.Id
};
user.Roles.Add(userRole);
但是,您确实应该为此使用该类。它有一个方法为您处理此问题
如果您确实不想使用异步方法,那么可以使用非异步扩展 你是想向数据库添加角色还是向用户添加角色?向用户添加角色我想我会把UserManager
的东西留给你,回答得好!