Ich verwende die Release-Version (RTM, nicht RC) von Visual Studio 2013 (heruntergeladen von MSDN 2013-10-18) und daher die neueste (RTM) Version von AspNet.Identity. Wenn ich ein neues Webprojekt erstelle, wähle ich "Individuelle Benutzerkonten" zur Authentifizierung aus. Dadurch werden die folgenden Tabellen erstellt:
- AspNetRoles
- AspNetUserClaims
- AspNetUserLogins
- AspNetUserRoles
- AspNetUsers
Wenn ich einen neuen Benutzer registriere (unter Verwendung der Standardvorlage), werden diese Tabellen (oben aufgeführt) erstellt und in die AspNetUsers-Tabelle wird ein Datensatz eingefügt, der Folgendes enthält:
- Ich würde
- Nutzername
- PasswordHash
- Sicherheitsstempel
- Diskriminator
Durch Hinzufügen öffentlicher Eigenschaften zur Klasse "ApplicationUser" habe ich der AspNetUsers-Tabelle erfolgreich zusätzliche Felder hinzugefügt, z. B. "Vorname", "Nachname", "Telefonnummer" usw.
Hier ist meine Frage. Gibt es eine Möglichkeit, die Namen der oben genannten Tabellen zu ändern (wenn sie zum ersten Mal erstellt werden), oder werden sie immer mit dem AspNet
oben aufgeführten Präfix benannt ? Wenn die Tabellennamen unterschiedlich benannt werden können, erläutern Sie bitte, wie.
- UPDATE -
Ich habe die Lösung von @Hao Kung implementiert. Es wird zwar eine neue Tabelle erstellt (zum Beispiel habe ich sie MyUsers genannt), aber es wird auch weiterhin die AspNetUsers-Tabelle erstellt. Ziel ist es, die Tabelle "AspNetUsers" durch die Tabelle "MyUsers" zu ersetzen. Siehe Code unten und Datenbankabbildung der erstellten Tabellen.
Ich möchte eigentlich jede AspNet
Tabelle durch meinen eigenen Namen ersetzen ... Zum Beispiel MyRoles, MyUserClaims, MyUserLogins, MyUserRoles und MyUsers.
Wie schaffe ich das und erhalte nur einen Satz Tabellen?
public class ApplicationUser : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string PostalCode { get; set; }
public string PhonePrimary { get; set; }
public string PhoneSecondary { get; set; }
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(): base("DefaultConnection")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<IdentityUser>().ToTable("MyUsers");
}
}
- UPDATE ANTWORT -
Vielen Dank an Hao Kung und Peter Stulinski. Das hat mein Problem gelöst ...
protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<IdentityUser>().ToTable("MyUsers").Property(p => p.Id).HasColumnName("UserId");
modelBuilder.Entity<ApplicationUser>().ToTable("MyUsers").Property(p => p.Id).HasColumnName("UserId");
modelBuilder.Entity<IdentityUserRole>().ToTable("MyUserRoles");
modelBuilder.Entity<IdentityUserLogin>().ToTable("MyUserLogins");
modelBuilder.Entity<IdentityUserClaim>().ToTable("MyUserClaims");
modelBuilder.Entity<IdentityRole>().ToTable("MyRoles");
}
modelBuilder.Entity<IdentityUser>().ToTable("MyUsers").Property(p => p.Id).HasColumnName("UserId");
von @Sergey erwähnte Zeile zu entfernen . Andernfalls hat die neu benannte MyUsers
Tabelle eine Diskriminatorspalte, wie @Daskul hervorhob. Außerdem ist Ihre MyUserClaims
Tabellenstruktur falsch, wie @Matt Overall hervorhob. Ich denke, die Idee, das hinzuzufügen, kam von einem Kommentar zu @Giang in einem MSDN-Blog , aber es ist falsch!