以编程方式向身份添加角色

Adding role to Identity programmatically

在每件事之前我应该​​说:“为什么以前容易的事情现在变得如此困难!!!!

我为我的 EF 数据上下文创建了一个 Class Library 项目。我也想用 Identity。所以我像这样创建上下文 class:

public class Context : IdentityDbContext
{
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("Server=.;Database=MyDB1;Trusted_Connection=True;");
        base.OnConfiguring(optionsBuilder);
    }
}

我添加了迁移和更新数据库。所以我想写一些代码来为角色 table 添加角色并使用:RoleManager<IdentityRole> :

private readonly RoleManager<IdentityRole> _rolesManager;

public RoleRepository()
{
    _rolesManager = new RoleManager<IdentityRole>();
}

public async Task AddRole(string roleName)
{
    var role = new IdentityRole();
    role.Name = roleName;
    await _roleManager.CreateAsync(role);
}

问题是我无法从 RoleManager<IdentityRole> 实例化,我得到了这个错误:

There is no argument given that corresponds to the required formal parameter 'store' of 'RoleManager.RoleManager(IRoleStore, IEnumerable<IRoleValidator>, ILookupNormalizer, IdentityErrorDescriber, ILogger<RoleManager>)'

RoleManager<IdentityRole> 实例化时如何添加此参数?

如何在 class 库项目中将角色添加到角色 table?

谢谢

希望下面的代码对您有所帮助。

using (var context = new ApplicationDbContext())
          {
            var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context), null, null, null, null);

            var role = new IdentityRole(RoleName);

            var result = await roleManager.RoleExistsAsync(RoleName);
            if (!result)
            {
              await roleManager.CreateAsync(role);
            }
          }