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

5

我重命名了标准身份表:

    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");
    }

我得到了以下内容:

错误一

modelBuilder中,我需要做什么来删除这一列?

1个回答

3
Discriminator列在表结构继承场景中被使用且是必需的。
Code First必须添加一个特殊列以对持久化类进行区分。这不是我们对象模型中持久化类的属性,而是EF Code First内部使用的。默认情况下,列名为Discriminator,其类型为字符串。值默认为持久化类名称——在此例中为User
更多信息 更新 如果你不想要这个列,你可以通过将User添加到模型中而不是IdentityUser来实现,例如给你的上下文添加一个DbSet<User>
modelBuilder.Entity<User>().ToTable("Users");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接