Как изменить имена таблиц, используемые идентификатором asp.net 3 (vnext)?

Метод, используемый в идентификаторе asp.net 2 для изменения имен таблиц идентификаторов, не работает в идентификаторе asp.net 3.

Ответ 1

Вы можете сделать это легко, изменив сопоставление сущностей с методом расширения ToTable("TableName") на OnModelCreating вашего DbContext:

И вам не нужно использовать .ForSqlServerToTable(), просто .ToTable() должен работать в любой базе данных.

protected override void OnModelCreating(ModelBuilder builder)
{
    base.OnModelCreating(builder);

    builder.Entity<User>().ToTable("Users"); // Your custom IdentityUser class
    builder.Entity<IdentityUserLogin<string>>().ToTable("UserLogins");
    builder.Entity<IdentityUserToken<string>>().ToTable("UserTokens");
    builder.Entity<IdentityUserClaim<string>>().ToTable("UserClaims");
    builder.Entity<IdentityUserRole<string>>().ToTable("UserRoles");
    builder.Entity<IdentityRoleClaim<string>>().ToTable("RoleClaims");
    builder.Entity<IdentityRole>().ToTable("Roles");            
}

Единственный улов здесь - запомнить использование общих типов с типом вашего идентификатора (строка по умолчанию используется для AspNetCore.

Ответ 2

Измените объекты компоновщика в OnModelCreating вашего ApplicationDbContext, используя метод расширения ForSqlServerToTable, чтобы изменить имя нужной таблицы.

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        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<ApplicationUser>().ForSqlServerToTable("Users");
            builder.Entity<IdentityUserRole<string>>().ForSqlServerToTable("UserRoles");
            builder.Entity<IdentityUserLogin<string>>().ForSqlServerToTable("UserLogins");
            builder.Entity<IdentityUserClaim<string>>().ForSqlServerToTable("UserClaims");
            builder.Entity<IdentityRole>().ForSqlServerToTable("Roles");                        
        }
    }