无法为'IdentityRoleClaim'创建DbSet''
问题描述:
我正在尝试为已经创建的数据库创建一个自定义标识,并且它正在为登录的用户工作,但没有角色,但是具有角色的用户会显示此错误。无法为'IdentityRoleClaim'创建DbSet''
无法创建 'IdentityRoleClaim' 一个DbSet,因为这种类型的 没有在模型上下文
包括Startup.cs
services.AddIdentity<ApplicationIdentityUser, CustomRole>()
.AddUserStore<CustomUserStore<ApplicationIdentityUser>>()
.AddUserManager<CustomUserManager<ApplicationIdentityUser>>()
.AddRoleStore<CustomRoleStore<ApplicationIdentityUser>>()
.AddRoleManager<CustomRoleManager>()
.AddEntityFrameworkStores<AhUserContext, int>()
.AddDefaultTokenProviders();
services.AddMvc()
.AddViewLocalization(Microsoft.AspNetCore.Mvc.Razor.LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();
//Add the custom Password Hasher
services.AddScoped<PasswordHasher<ApplicationIdentityUser>, CustomPasswordHasher<ApplicationIdentityUser>>();
services.AddScoped<IdentityRole<int>, CustomRole>();
services.AddScoped<IdentityRoleClaim<int>, CustomIdentityRoleClaim>();
services.AddScoped<SignInManager<ApplicationIdentityUser>, CustomSignInManager<ApplicationIdentityUser>>();
services.AddScoped<IdentityUserClaim<int>, CustomIdentityUserClaim>();
services.AddScoped<IdentityUserLogin<int>, CustomIdentityUserLogin>();
// Add application services.
services.AddTransient<IEmailSender, AuthMessageSender>();
services.AddTransient<ISmsSender, AuthMessageSender>();
services.AddOptions();
services.Configure<AppSettings>(Configuration.GetSection("MicrosoftAzureStorage"));
services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();
自定义标识类
public class ApplicationIdentityUser : IdentityUser<int>{}
public class CustomIdentityRoleClaim : IdentityRoleClaim<int>
public class CustomIdentityUserClaim : IdentityUserClaim<int>
public class CustomIdentityUserRole : IdentityUserRole<int>
public class CustomRole : IdentityRole<int>
public class CustomRoleManager : RoleManager<CustomRole>
public class CustomRoleStore<ApplicationIdentityUser> : RoleStore<CustomRole, AhUserContext, int>
public class CustomSignInManager<IUser> : SignInManager<IUser> where IUser : ApplicationIdentityUser
public class CustomUserManager<IUser> : UserManager<IUser> where IUser : ApplicationIdentityUser
public class CustomUserStore<IUser> : UserStore<IUser, CustomRole, AhUserContext, int> where IUser : ApplicationIdentityUser
答
更改:
public class CustomRoleStore<ApplicationIdentityUser> : RoleStore<CustomRole, AhUserContext, int>
到
public class CustomRoleStore<ApplicationIdentityUser> : RoleStore<CustomRole, AhUserContext, int, CustomIdentityUserRole, CustomIdentityRoleClaim >
我有同样的问题。因为我有一个自定义的UserManager以及RoleManager,所以都必须正确地传播继承链,以便它们都能正常工作。
你的上下文('AhUserContext'?)是什么样的?它是从哪里继承的? – DavidG
AHUserContext是的DbContext – Question
它需要从'IdentityDbContext <....>' – DavidG