Saya menggunakan versi rilis (RTM, bukan RC) dari Visual Studio 2013 (diunduh dari MSDN 2013-10-18) dan karena itu versi AspNet.Identity (RTM) terbaru. Ketika saya membuat proyek web baru, saya memilih "Akun Pengguna Individual" untuk otentikasi. Ini menciptakan tabel berikut:
- AspNetRoles
- AspNetUserClaims
- AspNetUserLogins
- AspNetUserRoles
- AspNetUsers
Ketika saya mendaftarkan pengguna baru (menggunakan templat default), tabel ini (tercantum di atas) dibuat dan tabel AspNetUsers memiliki catatan yang dimasukkan yang berisi:
- Indo
- Nama pengguna
- Kata sandi
- SecurityStamp
- Diskriminator
Selain itu, dengan menambahkan properti publik ke kelas "ApplicationUser" Saya telah berhasil menambahkan bidang tambahan ke tabel AspNetUsers, seperti "FirstName", "LastName", "PhoneNumber", dll.
Inilah pertanyaan saya. Apakah ada cara untuk mengubah nama tabel di atas (saat pertama kali dibuat) atau akankah mereka selalu dinamai dengan AspNet
awalan seperti yang saya sebutkan di atas? Jika nama tabel dapat dinamai berbeda, tolong jelaskan caranya.
- PEMBARUAN -
Saya menerapkan solusi @ Hua Kung. Itu membuat tabel baru (misalnya saya menyebutnya MyUsers), tetapi juga masih membuat tabel AspNetUsers. Tujuannya adalah untuk mengganti tabel "AspNetUsers" dengan tabel "MyUsers". Lihat kode di bawah ini dan gambar database dari tabel yang dibuat.
Saya sebenarnya ingin mengganti masing-masing AspNet
tabel dengan nama saya sendiri ... Untuk fxample, MyRoles, MyUserClaims, MyUserLogins, MyUserRoles, dan MyUsers.
Bagaimana saya mencapai ini dan berakhir dengan hanya satu set tabel?
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");
}
}
- JAWABAN TERBARU -
Terima kasih untuk Hao Kung dan Peter Stulinski. Ini menyelesaikan masalah saya ...
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");
seperti yang disebutkan oleh @Sergey. Jika tidak, MyUsers
tabel yang baru bernama memiliki kolom diskriminator seperti yang ditunjukkan @Daskul. Selain itu, MyUserClaims
struktur tabel Anda akan salah seperti yang ditunjukkan oleh @Matt Keseluruhan. Saya pikir ide untuk menambahkan berasal dari komentar ke @iang di blog msdn , tapi itu salah!