Entity framework EF代码首次迁移不需要的列标识符

Entity framework EF代码首次迁移不需要的列标识符,entity-framework,ef-code-first,Entity Framework,Ef Code First,我使用的是EF6.1.1 在数据库上使用代码第一次迁移时,它会向AspNetUserRoles表中添加两个不需要的列:IdentityRole_Id、IdentityUser_Id 我看到了,但没有帮助我 我怎样才能摆脱它们 这是我的onmodel创建 protected override void OnModelCreating(DbModelBuilder modelBuilder) { if (modelBuilder == null) {

我使用的是EF6.1.1 在数据库上使用代码第一次迁移时,它会向AspNetUserRoles表中添加两个不需要的列:IdentityRole_Id、IdentityUser_Id 我看到了,但没有帮助我

我怎样才能摆脱它们

这是我的onmodel创建

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        if (modelBuilder == null)
        {
            throw new ArgumentNullException("modelBuilder");
        }

        // Keep this:
        modelBuilder.Entity<IdentityUser>().ToTable("AspNetUsers");

        // Change TUser to ApplicationUser everywhere else - 
        // IdentityUser and ApplicationUser essentially 'share' the AspNetUsers Table in the database:
        EntityTypeConfiguration<ApplicationUser> table =
            modelBuilder.Entity<ApplicationUser>().ToTable("AspNetUsers");

        table.Property((ApplicationUser u) => u.UserName).IsRequired();

        // EF won't let us swap out IdentityUserRole for ApplicationUserRole here:            
        modelBuilder.Entity<ApplicationUser>().HasMany<IdentityUserRole>((ApplicationUser u) => u.Roles);
        modelBuilder.Entity<IdentityUserRole>().HasKey((IdentityUserRole r) =>
            new { UserId = r.UserId, RoleId = r.RoleId }).ToTable("AspNetUserRoles");

        // Leave this alone:
        EntityTypeConfiguration<IdentityUserLogin> entityTypeConfiguration =
            modelBuilder.Entity<IdentityUserLogin>().HasKey((IdentityUserLogin l) =>
                new
                {
                    UserId = l.UserId,
                    LoginProvider = l.LoginProvider,
                    ProviderKey
                        = l.ProviderKey
                }).ToTable("AspNetUserLogins");

        //entityTypeConfiguration.HasRequired<IdentityUser>((IdentityUserLogin u) => u.User);
        EntityTypeConfiguration<IdentityUserClaim> table1 = modelBuilder.Entity<IdentityUserClaim>().ToTable("AspNetUserClaims");

        //table1.HasRequired<IdentityUser>((IdentityUserClaim u) => u.User);

        // Add this, so that IdentityRole can share a table with ApplicationRole:
        modelBuilder.Entity<IdentityRole>().ToTable("AspNetRoles");

        // Change these from IdentityRole to ApplicationRole:
        EntityTypeConfiguration<ApplicationRole> entityTypeConfiguration1 =
            modelBuilder.Entity<ApplicationRole>().ToTable("AspNetRoles");

        entityTypeConfiguration1.Property((ApplicationRole r) => r.Name).IsRequired();
    }

假设您使用的是Identity EntityFramework(您的DbcontextClass:IdentityDbContext),那么我认为这一行就是原因

modelBuilder.Entity<IdentityUserRole>().HasKey((IdentityUserRole r) =>
        new { UserId = r.UserId, RoleId = r.RoleId }).ToTable("AspNetUserRoles");
modelBuilder.Entity<IdentityUserRole>().HasKey((IdentityUserRole r) =>
        new { UserId = r.UserId, RoleId = r.RoleId }).ToTable("AspNetUserRoles");
 protected override void OnModelCreating(DbModelBuilder modelBuilder)
 {
       modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
 }
base.OnModelCreating(modelBuilder);