.net核心身份RoleManager异常

时间:2017-06-28 08:32:30

标签: c# asp.net asp.net-core asp.net-core-mvc

我为更改ID类型创建了新类:

public sealed class Role : IdentityRole<long>
{

}

在AppContext中,它看起来像:

builder.Entity<Role>(i => {
    i.ToTable("tblRole");
    i.HasKey(x => x.Id);
});

但是当我尝试创建类RoleManager的对象时:

RoleManager<Role> roleManager = serviceProvider.GetRequiredService<RoleManager<Role>>();

我有这个例外:

  

InvalidOperationException:找不到无参数构造函数   在实体类型'角色'。为了创建'角色'EF的实例   要求声明无参数构造函数。

当我更改类型时:

RoleManager<IdentityRole> roleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();

有这个例外:

  

InvalidOperationException:没有类型的服务   'Microsoft.AspNetCore.Identity.RoleManager`1 [Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityRole]'   已经注册。

如何解决此问题并添加useRoleManager以添加角色? 干杯!

1 个答案:

答案 0 :(得分:1)

如果存在关系,则必须在类Role中声明构造函数和成员并链接到RoleManager类。 您可以按照本教程自动生成它:Microsoft