2017-01-03 40 views
9

zacząłem z .NET Core w MVC 5 zmieniłem domyślne nazwy tabel na przykład: AspNETUsers do użytkowników w ten sposób i to działało idealnie: W IdentityModels Klasa I dded:Jak zmienić domyślne nazwy tabel tożsamości ASP.NET w .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"); 
    } 

Ale to nie działa w .NET CORE (MVC 6). Czy ktoś może mi pomóc? Wielkie dzięki.

+1

Proszę nie używać: Net Rdzeń jako synonim ASP.NET Rdzenia! .NET Core to środowisko wykonawcze, takie jak środowisko wykonawcze .NET 4.x. ASP.NET Core po drugiej stronie to framework/webstack i działa na ** BOTH **, .NET Core i .NET> = 4.5.1 – Tseng

+0

@Tseng, uczę się Core, na pewno gdzie jest wiele różnic między ASP.NET i Core. –

Odpowiedz

7

Spróbuj zmienić wiązanie z

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

     }); 
5

-Aby zmienić nazwy tych tabel (IdentityUserRole <Tkey>, IdentityUserToken <Tkey>, IdentityRoleClaim <Tkey>, IdentityUserClaim <Tkey>, IdentityUserLogin <Tkey>) trzeba określić typ TKey (Wskazana typ używany dla klucza podstawowego), który jest ciągiem (GUID) domyślnie, nawet jeśli go nie zmieniłeś.

-Jeśli chcesz zmienić klucza podstawowego z GUID int 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

Odpowiedzi dotyczące tylko kodu są odradzane na SO. Czy możesz użyć kilku słów i wyjaśnić, na ile to rozwiązuje problem ?! – ImportanceOfBeingErnest

+0

Dodałem powyższy kod do mojej aplikacji 2.0 mvc core asp.net. Oczyszczone i odbudowane projektu i usunięte folder Migracje, a następnie uruchom aktualizację bazy danych w konsoli nuget i nadal tworzy tabele tożsamości przy użyciu oryginalnych nazw AspNet *. – alexb

+0

Witaj Alexb, stworzyłem nowy .NET Core 2.0 i użyłem tego samego kodu do zmiany domyślnych nazw tabel tożsamości ASP.NET i działało to dobrze ze mną. Czy sprawdziłeś ApplicationDbContextModelSnapshot, aby sprawdzić, czy migracja powiodła się z nazwami nowych tabel, czy nie? –