ฉันกำลังใช้รุ่นที่วางจำหน่าย (RTM ไม่ใช่ RC) ของ Visual Studio 2013 (ดาวน์โหลดจาก MSDN 2013-10-18) ดังนั้น AspNet.Identity รุ่นล่าสุด (RTM) เมื่อฉันสร้างโครงการเว็บใหม่ฉันเลือก "บัญชีผู้ใช้ส่วนบุคคล" สำหรับการตรวจสอบ สิ่งนี้สร้างตารางต่อไปนี้:
- AspNetRoles
- AspNetUserClaims
- AspNetUserLogins
- AspNetUserRoles
- AspNetUsers
เมื่อฉันลงทะเบียนผู้ใช้ใหม่ (โดยใช้เทมเพลตเริ่มต้น) ตารางเหล่านี้ (รายการด้านบน) จะถูกสร้างขึ้นและตาราง AspNetUsers จะมีการบันทึกแทรกซึ่งประกอบด้วย:
- Id
- ชื่อผู้ใช้
- PasswordHash
- SecurityStamp
- discriminator
นอกจากนี้โดยการเพิ่มคุณสมบัติสาธารณะในคลาส "ApplicationUser" ฉันได้เพิ่มฟิลด์เพิ่มเติมลงในตาราง AspNetUsers เช่น "FirstName", "LastName", "PhoneNumber" เป็นต้น
นี่คือคำถามของฉัน มีวิธีการเปลี่ยนชื่อของตารางข้างต้น (เมื่อพวกเขาถูกสร้างขึ้นครั้งแรก) หรือพวกเขาจะถูกตั้งชื่อด้วยAspNet
คำนำหน้าตามที่ฉันระบุไว้ข้างต้นหรือไม่ หากชื่อตารางแตกต่างกันโปรดอธิบายวิธีการ
- อัปเดต -
ฉันใช้งานโซลูชันของ @Hao Kung มันสร้างตารางใหม่ (เช่นฉันเรียกว่า MyUsers) แต่ก็ยังสร้างตาราง AspNetUsers เป้าหมายคือการแทนที่ตาราง "AspNetUsers" ด้วยตาราง "MyUsers" ดูรหัสด้านล่างและภาพฐานข้อมูลของตารางที่สร้าง
ฉันต้องการแทนที่แต่ละAspNet
ตารางด้วยชื่อของฉันเอง ... สำหรับ fxample, MyRoles, MyUserClaims, MyUserLogins, MyUserRoles และ MyUsers
ฉันจะทำสิ่งนี้ให้สำเร็จและจบลงด้วยตารางชุดเดียวได้อย่างไร
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");
}
}
- อัปเดตคำตอบ -
ขอบคุณทั้ง Hao Kung และ Peter Stulinski สิ่งนี้แก้ไขปัญหาของฉัน ...
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");
@Sergey ดังกล่าว มิฉะนั้นMyUsers
ตารางที่เพิ่งตั้งชื่อใหม่จะมีคอลัมน์ตัวเลือกตามที่ @Daskul ชี้ให้เห็น นอกจากนี้MyUserClaims
โครงสร้างตารางของคุณจะผิดเพราะ @Matt Total ชี้ให้เห็น ฉันคิดว่าความคิดที่จะเพิ่มสิ่งนั้นมาจากความคิดเห็นที่ @Giang ในบล็อก msdn แต่มันผิด