Sto usando la versione di rilascio (RTM, non RC) di Visual Studio 2013 (scaricata da MSDN 2013-10-18) e quindi l'ultima versione (RTM) di AspNet.Identity. Quando creo un nuovo progetto Web, seleziono "Account utente individuali" per l'autenticazione. Questo crea le seguenti tabelle:
- AspNetRoles
- AspNetUserClaims
- AspNetUserLogins
- AspNetUserRoles
- AspNetUsers
Quando registro un nuovo utente (usando il modello predefinito), queste tabelle (elencate sopra) vengono create e la tabella AspNetUsers ha un record inserito che contiene:
- Id
- Nome utente
- PasswordHash
- SecurityStamp
- Discriminatore
Inoltre, aggiungendo proprietà pubbliche alla classe "ApplicationUser" ho aggiunto correttamente campi aggiuntivi alla tabella AspNetUsers, come "FirstName", "LastName", "PhoneNumber", ecc.
Ecco la mia domanda C'è un modo per cambiare i nomi delle tabelle sopra (quando vengono create per la prima volta) o saranno sempre nominati con il AspNet
prefisso come ho elencato sopra? Se i nomi delle tabelle possono essere nominati in modo diverso, spiega come.
-- AGGIORNARE --
Ho implementato la soluzione di @Hao Kung. Crea una nuova tabella (ad esempio, l'ho chiamata MyUsers), ma crea anche la tabella AspNetUsers. L'obiettivo è sostituire la tabella "AspNetUsers" con la tabella "MyUsers". Vedere il codice seguente e l'immagine del database delle tabelle create.
In realtà vorrei sostituire ogni AspNet
tabella con il mio nome ... Per fxample, MyRoles, MyUserClaims, MyUserLogins, MyUserRoles e MyUsers.
Come posso ottenere questo risultato e finire con un solo set di tabelle?
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");
}
}
- AGGIORNA RISPOSTA -
Grazie sia a Hao Kung che a Peter Stulinski. Questo ha risolto il mio problema ...
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");
come indicato da @Sergey. Altrimenti, la MyUsers
tabella appena nominata ha una colonna discriminatore come ha sottolineato @Daskul. Inoltre, la MyUserClaims
struttura della tabella sarà errata, come sottolineato da @Matt Overall. Penso che l'idea di aggiungere sia nata da un commento a @Giang in un blog msdn , ma è sbagliata!