如何使用带有EF和Identity的ASP.NET Core在MySQL中创建自定义UserClaims表?

时间:2018-06-05 10:01:54

标签: c# mysql asp.net-core asp.net-identity

我正在尝试在MySQL数据库中实现ASP.NET Core Identity。我想在名为“aspnetuserclaims”的表中保存声明。我设法在MyContext中的 OnModelCreating()方法中为用户指定自定义表格,该方法继承自 IdentityDbContext 类:

 modelBuilder.Entity<ApplicationUser>().ToTable("users").Property(p => p.Id).HasColumnName("Id");

但是,当我想对使用以下内容继承 IdentityUserClaim 的类进行相同操作时:

modelBuilder.Entity<ApplicationUserClaim>().ToTable("userclaims").Property(p => p.Id).HasColumnName("Id");

根本不起作用。

ApplicationUser ApplicationUserClaim 都是干净的类,如下所示:

  public class ApplicationUser : IdentityUser<string> {}

例外:

  

MySqlException:表'dbname.aspnetuserclaims'不存在

1 个答案:

答案 0 :(得分:1)

IdentityUser具有泛型类型重载。您使用的是IdentityUser<TKey>,但如果您想要自定义类似索赔类的内容,则需要指定IdentityUser<TKey,TUserClaim,TUserRole,TUserLogin>

此外,IdentityDbContext也有泛型类型重载,因此同样需要确保在那里使用正确的重载,即:IdentityDbContext<TUser,TRole,TKey,TUserClaim,TUserRole,TUserLogin,TRoleClaim,TUserToken>