Estoy usando la versión de lanzamiento (RTM, no RC) de Visual Studio 2013 (descargada de MSDN 2013-10-18) y, por lo tanto, la última versión (RTM) de AspNet.Identity. Cuando creo un nuevo proyecto web, selecciono "Cuentas de usuario individuales" para la autenticación. Esto crea las siguientes tablas:
- AspNetRoles
- AspNetUserClaims
- AspNetUserLogins
- AspNetUserRoles
- AspNetUsers
Cuando registro un nuevo usuario (usando la plantilla predeterminada), se crean estas tablas (enumeradas anteriormente) y la tabla AspNetUsers tiene un registro insertado que contiene:
- Carné de identidad
- Nombre de usuario
- PasswordHash
- Sello de seguridad
- Discriminado
Además, al agregar propiedades públicas a la clase "ApplicationUser", he agregado con éxito campos adicionales a la tabla AspNetUsers, como "FirstName", "LastName", "PhoneNumber", etc.
Aquí está mi pregunta. ¿Hay alguna manera de cambiar los nombres de las tablas anteriores (cuando se crean por primera vez) o siempre se nombrarán con el AspNet
prefijo que mencioné anteriormente? Si los nombres de las tablas se pueden nombrar de manera diferente, explique cómo.
- ACTUALIZACIÓN -
Implementé la solución de @Hao Kung. Sí crea una nueva tabla (por ejemplo, la llamé MyUsers), pero también crea la tabla AspNetUsers. El objetivo es reemplazar la tabla "AspNetUsers" con la tabla "MyUsers". Vea el código a continuación y la imagen de la base de datos de las tablas creadas.
En realidad, me gustaría reemplazar cada AspNet
tabla con mi propio nombre ... Por ejemplo, MyRoles, MyUserClaims, MyUserLogins, MyUserRoles y MyUsers.
¿Cómo logro esto y termino con un solo conjunto de tablas?
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");
}
}
- ACTUALIZAR RESPUESTA -
Gracias a Hao Kung y Peter Stulinski. Esto resolvió mi 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");
lo mencionado por @Sergey. De lo contrario, la MyUsers
tabla recién nombrada tiene una columna discriminadora como señaló @Daskul. Además, la MyUserClaims
estructura de su tabla será incorrecta, como señaló @Matt Overall. Creo que la idea de agregar eso vino de un comentario a @Giang en un blog de msdn , ¡pero está mal!