无法为'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 
+0

你的上下文('AhUserContext'?)是什么样的?它是从哪里继承的? – DavidG

+0

AHUserContext是的DbContext – Question

+3

它需要从'IdentityDbContext <....>' – DavidG

更改:

public class CustomRoleStore<ApplicationIdentityUser> : RoleStore<CustomRole, AhUserContext, int> 

public class CustomRoleStore<ApplicationIdentityUser> : RoleStore<CustomRole, AhUserContext, int, CustomIdentityUserRole, CustomIdentityRoleClaim > 

我有同样的问题。因为我有一个自定义的UserManager以及RoleManager,所以都必须正确地传播继承链,以便它们都能正常工作。