2017-01-03 27 views
9

Ben varsayılan tablo örneğin isimlerini değiştirdi MVC 5'de, .NET Core başladım: Bu şekilde kullanıcılar AspNETUsers ve mükemmel çalıştı: Sınıf I dded yılında IdentityModels:.NET CORE'da varsayılan ASP.NET Kimlik tablosu adlarını nasıl değiştirebilirim?

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"); 
    } 

Ama .NET CORE (MVC 6) 'da çalışmıyor. Herkes bana yardım edebilir mi? Çok teşekkürler.

+1

kullanmayın lütfen: NET Çekirdek ASP.NET Core eş anlamlısı olarak! .NET Core, .NET 4.x çalışma zamanı gibi bir çalışma zamanıdır. Diğer tarafta ASP.NET Çekirdek bir framework/webstack ve çalışır ** BOTH **, .NET Çekirdek ve .NET> = 4.5.1 – Tseng

+0

@ Tseng, Çekirdek öğreniyorum, emin nerede arasında çok fark var ASP.NET ve Çekirdek. –

cevap

7

deneyin Eğer TKey türünü (belirtmek zorunda olan tabloların isimlerini (IdentityUserRole <Tkey>, IdentityUserToken <Tkey>, IdentityRoleClaim <Tkey>, IdentityUserClaim <Tkey>, IdentityUserLogin <Tkey>) değiştirmek -To

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

     }); 
5

bağlanma değiştirmek birincil anahtar için kullanılan tür), değiştirmediyseniz bile varsayılan olarak dize (GUID).

sen int GUID'deki birincil anahtar değiştirmek istediğiniz -Eğer 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

Sadece kod cevapları SO üzerinde önerilmemektedir. Birkaç kelime kullanabilir ve sorunun ne kadar çözüldüğünü açıklayabilir misiniz ?! – ImportanceOfBeingErnest

+0

Yukarıdaki kodu asp.net core 2.0 mvc uygulamasına ekledim. Temizlendi ve projeyi yeniden oluşturup Göçmenler klasörünü sildikten sonra, nuget konsolundaki güncelleme veritabanını çalıştırın ve yine de orijinal AspNet * adlarını kullanarak kimlik tablolarını oluşturdu. – alexb

+0

Merhaba Alexb, yeni .NET Core 2.0 oluşturdum ve varsayılan ASP.NET kimlik tablo adlarını değiştirmek için aynı kodu kullandım ve benimle iyi çalışıyor. Taşıma işleminizin yeni tablo adlarıyla başarılı olup olmadığını görmek için ApplicationDbContextModelSnapshot öğesini kontrol ettiniz mi? –

İlgili konular