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
的东西留给你,回答得好!