Метод, используемый в asp.net идентичности 2, чтобы изменить имена таблиц идентичности не работает в идентичности asp.net 3.Как изменить имена таблиц, используемые asp.net identity 3 (vnext)?
5
A
ответ
3
Изменить Строитель объекты в 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");
}
}
4
Вы можете легко сделать это, изменив отображение сущности с методом расширения 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.
работал для меня с простым старым 'ToTable' вместо' ForSqlServerToTable'. (хотя я использовал идентификатор ядра asp.net с проектом примера ядра dotnet, поэтому, возможно, вам не поможет) – Terminus