如何从 Asp.Net Identity 表中删除鉴别器列

chi*_*s0v 5 c# sql asp.net-mvc entity-framework asp.net-identity

我重命名了标准身份表:

    public class User : IdentityUser
    {
        //...
        public string Name { get; set; }
        public string Surname { get; set; }
        public DateTime? RegisteredDate { get; set; }
        public DateTime? LastLoginDate { get; set; }
        //...
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<IdentityUser>().ToTable("Users");
        modelBuilder.Entity<User>().ToTable("Users");
        modelBuilder.Entity<IdentityRole>().ToTable("Roles");
        modelBuilder.Entity<Role>().ToTable("Roles");
        modelBuilder.Entity<IdentityUserRole>().ToTable("UserRoles");
        modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogins");
        modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaims");
    }
Run Code Online (Sandbox Code Playgroud)

并得到这个:

错误一

我需要做什么才能modelBuilder删除此专栏?

Sir*_*ifi 3

Discriminator列在 Table-Per-Hierarchy 继承场景中使用且必需。

\n\n

Code First 必须添加一个特殊的列来区分持久类。这是\xe2\x80\x99t 对象模型中持久类的一个属性;it\xe2\x80\x99s 由 EF Code First 内部使用。默认情况下,列名称为Discriminator,类型为字符串。这些值默认为持久类名称 \xe2\x80\x94(在本例中为 )User
\n更多信息

\n\n

更新

\n\n

如果您不想要该列,您可以通过在上下文中添加 a 来使User模型成为模型的一部分:IdentityUserDbSet<User>

\n\n
modelBuilder.Entity<User>().ToTable("Users");\n
Run Code Online (Sandbox Code Playgroud)\n