Изменение имен таблиц Identity 3.0 в ASP.NET Core MVC6 не работает

  1. Этот тот же вопрос был задан и ответа нет уже 12 дней...

  2. Я просмотрел this, который использует «ToTable» в качестве обновления вопроса.

  3. Я просмотрел это, которое кажется устаревшим.

Я хочу изменить имена таблиц идентификаторов 3.0 - ASP.NET Core.

До сих пор, используя обновление опции «ToTable» (№ 2 выше), мне удалось повредить файл блокировки и, как следствие, испортить проект. Третий вариант устарел.

Я создал ванильный проект - никаких изменений, только что созданных через VS2015 с идентификатором 3.0

Затем я попробовал это:

    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
        // Customize the ASP.NET Identity model and override the defaults if needed.
        // For example, you can rename the ASP.NET Identity table names and more.
        // Add your customizations after calling base.OnModelCreating(builder);

        builder.Entity<IdentityUser>().ToTable("MyUsers").Property(p => p.Id).HasColumnName("UserId");
        builder.Entity<ApplicationUser>().ToTable("MyUsers").Property(p => p.Id).HasColumnName("UserId");
        builder.Entity<IdentityRole>().ToTable("MyRoles");
    }

Затем я проверил обновленную миграцию, чтобы увидеть, изменились ли имена таблиц, и они не изменились.

На данный момент я использую 1.0.0-rc1-update2.

Как изменить имена этих таблиц?


person si2030    schedule 26.04.2016    source источник
comment
Возможный дубликат stackoverflow.com/questions/34523066/   -  person devfric    schedule 26.04.2016
comment
Ага.. пропустил это. У меня это работает, но я не могу получить builder.Entity‹IdentityRoleClaim‹string››().ForSqlServerToTable(RoleClaims); работать. Все остальные работают, но когда я добавляю это, это не так.   -  person si2030    schedule 27.04.2016


Ответы (2)


Попробуйте этот код, он изменяет все имена таблиц asp.net по умолчанию на имена пользовательских таблиц, например. User, Role, UserClaim... и т.д. у меня работает.

using Microsoft.AspNetCore.Identity;
...
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{

     ...

     protected override void OnModelCreating(ModelBuilder modelBuilder)
     {
        base.OnModelCreating(modelBuilder);
        // Add your customizations after calling base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<ApplicationUser>().ToTable("User");
        modelBuilder.Entity<IdentityRole>().ToTable("Role");
        modelBuilder.Entity<IdentityUserClaim<string>>().ToTable("UserClaim");
        modelBuilder.Entity<IdentityUserRole<string>>().ToTable("UserRole");
        modelBuilder.Entity<IdentityUserLogin<string>>().ToTable("UserLogin");
        modelBuilder.Entity<IdentityRoleClaim<string>>().ToTable("RoleClaim");
        modelBuilder.Entity<IdentityUserToken<string>>().ToTable("UserToken");
      }

}
person dinner689    schedule 13.01.2017

Вам нужно включить все аргументы универсального типа, чтобы он работал. Затем вам также нужно будет изменить пользователя и роль, чтобы включить аргументы общего типа.

public class BlahDbContext : IdentityDbContext<User, Role, long, UserClaim, UserRole, UserLogin, RoleClaim, UserToken>
{
    public BlahDbContext(DbContextOptions<BlahDbContext> options)
        : base(options)
    {
    }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
        // Customize the ASP.NET Identity model and override the defaults if needed.
        // For example, you can rename the ASP.NET Identity table names and more.
        // Add your customizations after calling base.OnModelCreating(builder);

        builder.Entity<User>().ToTable("Users");
        builder.Entity<Role>().ToTable("Roles");
        builder.Entity<UserRole>().ToTable("UserRoles");
        builder.Entity<UserLogin>().ToTable("UserLogins");
        builder.Entity<UserClaim>().ToTable("UserClaims");

        builder.Entity<RoleClaim>().ToTable("RoleClaims");
        builder.Entity<UserToken>().ToTable("UserTokens");            
    }
}

public class User : IdentityUser<long, UserClaim, UserRole, UserLogin>
public class Role : IdentityRole<long, UserRole, RoleClaim>
person Matt    schedule 23.01.2017