实体框架OnModel创建重复的表

时间:2015-09-16 08:34:46

标签: c# entity-framework

我使用ASP.NET Identity 2和EF代码首先创建5个表

  

dbo.AspNetRole

     

dbo.AspNetUsers

     

dbo.AspNetUsersClaim

     

dbo.AspNetUsersLogin

     

dbo.AspNetUsersRole

我需要更改名称,所以我使用了这段代码

protected override void OnModelCreating(DbModelBuilder modelBuilder) {
    base.OnModelCreating(modelBuilder);

    modelBuilder.Entity<IdentityUser>().ToTable("RepricerUsers", "miportal");
    modelBuilder.Entity<IdentityUserClaim>().ToTable("RepricerUsersClaim", "miportal");
    modelBuilder.Entity<IdentityUserLogin>().ToTable("RepricerUsersLogin", "miportal");
    modelBuilder.Entity<IdentityUserRole>().ToTable("RepricerUsersRole", "miportal");
    modelBuilder.Entity<IdentityRole>().ToTable("RepricerRole", "miportal");
}

虽然有效但从IdentityUser创建的表格是重复的,所以我找到了dbo.AspNetUsersmiportal.RepricerUser

enter image description here

为什么这个表重复了?我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

我有类似的问题。你不能直接更改aspIdentity表名,所以你应该用一个继承自IdentityUser类的类来做。这是我在我的一个项目中所做的。你可以改变类名无论你想要什么。
模型

  public class User : IdentityUser
{
    public string Address { get; set;}//it can be any propery or you can leave class empty
}

配置类

 public sealed class UserConfig : EntityTypeConfiguration<User>
{
    public UserConfig()
    {
        ToTable("RepricerUsers", "miportal");
    }
}  

然后在你的上下文类

     protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {

        base.OnModelCreating(modelBuilder);
        modelBuilder.Configurations.Add(new UserConfig());
    }