如何从 Asp.Net 标识表中删除鉴别器列
How to delete descriminator column from Asp.Net Identity tables
我重命名了标准身份表:
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
中做什么才能删除此列?
Discriminator
列在 Table-Per-Hierarchy 继承方案中被使用和需要。
Code First 必须添加一个特殊的列来区分持久性 classes。这不是我们对象模型中持久性 class 的 属性;它由 EF Code First 内部使用。默认情况下,列名称为 Discriminator
,其类型为字符串。这些值默认为持久的 class 名称——在本例中为 User
.
More info
更新
如果您不想要该列,您可以使 User
成为模型的一部分而不是 IdentityUser
,例如通过在您的上下文中添加 DbSet<User>
:
modelBuilder.Entity<User>().ToTable("Users");
我重命名了标准身份表:
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
中做什么才能删除此列?
Discriminator
列在 Table-Per-Hierarchy 继承方案中被使用和需要。
Code First 必须添加一个特殊的列来区分持久性 classes。这不是我们对象模型中持久性 class 的 属性;它由 EF Code First 内部使用。默认情况下,列名称为 Discriminator
,其类型为字符串。这些值默认为持久的 class 名称——在本例中为 User
.
More info
更新
如果您不想要该列,您可以使 User
成为模型的一部分而不是 IdentityUser
,例如通过在您的上下文中添加 DbSet<User>
:
modelBuilder.Entity<User>().ToTable("Users");