EF7 Identity自定义表名第一粒种子

时间:2015-12-15 19:48:04

标签: entity-framework asp.net-identity asp.net-core-mvc

我创建了一个新的干净的asp.net 5项目(rc1-final),我只需要更改默认的ef身份表名称。

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    protected override void OnModelCreating(ModelBuilder builder)
    {
        // On event model creating
        base.OnModelCreating(builder);

        // Define table name
        builder.Entity<IdentityUser>().ToTable("BackEnd_AspNetUsers").Property(p => p.Id).HasColumnName("UserId");
        builder.Entity<ApplicationUser>().ToTable("BackEnd_AspNetUsers").Property(p => p.Id).HasColumnName("UserId");
        builder.Entity<IdentityUserRole<string>>().ToTable("BackEnd_AspNetUserRoles");
        builder.Entity<IdentityUserLogin<string>>().ToTable("BackEnd_AspNetUserLogins");
        builder.Entity<IdentityUserClaim<string>>().ToTable("BackEnd_AspNetUserClaims");
        builder.Entity<IdentityRole>().ToTable("BackEnd_AspNetRoles");
    }
}

我收到以下错误

  

InvalidOperationException:无法使用表&#39; BackEnd_AspNetUsers&#39;在架构&#39;&#39;对于实体&#39; ApplicationUser&#39;因为它被用于另一个实体。

2 个答案:

答案 0 :(得分:2)

这些行显示您正在尝试为基本标识类和应用程序的这些类的继承版本设置映射;

builder.Entity<IdentityUser>().ToTable("BackEnd_AspNetUsers").Property(p => p.Id).HasColumnName("UserId");
builder.Entity<ApplicationUser>().ToTable("BackEnd_AspNetUsers").Property(p => p.Id).HasColumnName("UserId");

你不需要两者,你应该只有指定的继承者 - ApplicationUser

答案 1 :(得分:0)

在您的情况下,您应该使用 ForSqlServerToTable ("newtablename")

builder.Entity<IdentityUser>().ForSqlServerToTable("BackEnd_AspNetUsers").Property(p => p.Id).HasColumnName("UserId");
builder.Entity<ApplicationUser>().ForSqlServerToTable("BackEnd_AspNetUsers").Property(p => p.Id).HasColumnName("UserId");