2017-01-03 1 views
9

Я начал с .NET Ядра, в MVC 5 я изменил имена по умолчанию таблицы, например: AspNETUsers для пользователей, таким образом, и она работала отлично: In IdentityModels Класс I dded:Как изменить имена таблиц имен ASP.NET по умолчанию в .NET CORE?

protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 

     modelBuilder.Entity<IdentityUser>().ToTable("Users").Property(p => p.Id).HasColumnName("UserId"); 
     modelBuilder.Entity<ApplicationUser>().ToTable("Users").Property(p => p.Id).HasColumnName("UserId"); 
     modelBuilder.Entity<IdentityUserRole>().ToTable("UserRoles"); 
     modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogins"); 
     modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaims"); 
     modelBuilder.Entity<IdentityRole>().ToTable("Roles"); 
    } 

Но он не работает в .NET CORE (MVC 6). Может ли кто-нибудь мне помочь? Большое спасибо.

+1

Пожалуйста, не используйте: NET Ядро, как синоним ASP.NET Ядра! .NET Core - это среда выполнения, например среда выполнения .NET 4.x. ASP.NET Core с другой стороны - это framework/webstack и работает на ** BOTH **, .NET Core и .NET> = 4.5.1 – Tseng

+0

@Tseng, я изучаю Core, конечно, где много различий между ASP.NET и Core. –

ответ

7

Попробуйте изменить связывание с

builder.Entity<ApplicationUser>(entity => 
     { 
      entity.ToTable(name:"Users"); 
      entity.Property(e => e.Id).HasColumnName("UserId"); 

     }); 
5

-Чтобы изменить имена этих таблиц (IdentityUserRole <Tkey>, IdentityUserToken <Tkey>, IdentityRoleClaim <Tkey>, IdentityUserClaim <Tkey>, IdentityUserLogin <Tkey>) вы должны указать тип TKey (The тип, используемый для первичного ключа), который является строкой (GUID) по умолчанию, даже если вы его не изменили.

-Если вы хотите изменить первичный ключ из GUID в целое https://medium.com/@goodealsnow/asp-net-core-identity-3-0-6018fc151b4

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>(entity => 
     { 
      entity.ToTable(name: "User");   
     }); 

     builder.Entity<IdentityRole>(entity => 
     { 
      entity.ToTable(name: "Role"); 
     }); 
     builder.Entity<IdentityUserRole<string>>(entity => 
     { 
      entity.ToTable("UserRoles"); 
      //in case you chagned the TKey type 
      // entity.HasKey(key => new { key.UserId, key.RoleId }); 
     }); 

     builder.Entity<IdentityUserClaim<string>>(entity => 
     { 
      entity.ToTable("UserClaims"); 
     }); 

     builder.Entity<IdentityUserLogin<string>>(entity => 
     { 
      entity.ToTable("UserLogins"); 
      //in case you chagned the TKey type 
      // entity.HasKey(key => new { key.ProviderKey, key.LoginProvider });  
}); 

     builder.Entity<IdentityRoleClaim<string>>(entity => 
     { 
      entity.ToTable("RoleClaims"); 

     }); 

     builder.Entity<IdentityUserToken<string>>(entity => 
     { 
      entity.ToTable("UserTokens"); 
      //in case you chagned the TKey type 
      // entity.HasKey(key => new { key.UserId, key.LoginProvider, key.Name }); 

     }); 
    } 
+0

Кодовые ответы не приветствуются на SO. Можете ли вы использовать несколько слов и объяснить, насколько это решает проблему ?! – ImportanceOfBeingErnest

+0

Я добавил указанный выше код в мое приложение asp.net core 2.0 mvc. Очистил и перестроил проект и удалил папку Migrations, а затем запустил базу данных обновлений в консоли nuget и все еще создал таблицы идентификации с использованием оригинальных имен AspNet *. – alexb

+0

Привет Alexb, я создал новый .NET Core 2.0, и я использовал тот же код для изменения имен имен таблиц ASP.NET по умолчанию, и он отлично работает со мной. Вы проверили ApplicationDbContextModelSnapshot, чтобы узнать, успешно ли ваш переход с новыми именами таблиц или нет? –

Смежные вопросы