Tôi đang sử dụng phiên bản phát hành (RTM, không phải RC) của Visual Studio 2013 (được tải xuống từ MSDN 2013-10-18) và do đó là phiên bản (RTM) mới nhất của AspNet.Identity. Khi tôi tạo một dự án web mới, tôi chọn "Tài khoản người dùng cá nhân" để xác thực. Điều này tạo ra các bảng sau:
- AspNetRoles
- AspNetUserClaims
- AspNetUserLogins
- AspNetUserRoles
- AspNetUsers
Khi tôi đăng ký người dùng mới (sử dụng mẫu mặc định), các bảng này (được liệt kê ở trên) được tạo và bảng AspNetUsers có một bản ghi được chèn có chứa:
- Tôi
- Tên tài khoản
- Mật khẩu
- Bảo mật
- Phân biệt đối xử
Ngoài ra, bằng cách thêm các thuộc tính công khai vào lớp "ApplicationUser", tôi đã thêm thành công các trường bổ sung vào bảng AspNetUsers, chẳng hạn như "FirstName", "LastName", "PhoneNumber", v.v.
Đây là câu hỏi của tôi. Có cách nào để thay đổi tên của các bảng trên (khi chúng được tạo lần đầu tiên) hay chúng sẽ luôn được đặt tên với AspNet
tiền tố như tôi đã liệt kê ở trên? Nếu tên bảng có thể được đặt tên khác nhau, vui lòng giải thích làm thế nào.
- CẬP NHẬT -
Tôi đã thực hiện giải pháp của @Hao Kung. Nó tạo ra một bảng mới (ví dụ tôi gọi nó là MyUsers), nhưng nó vẫn tạo bảng AspNetUsers. Mục tiêu là thay thế bảng "AspNetUsers" bằng bảng "MyUsers". Xem mã dưới đây và hình ảnh cơ sở dữ liệu của các bảng được tạo.
Tôi thực sự muốn thay thế mỗi AspNet
bảng bằng tên riêng của mình ... Đối với fxample, MyRoles, MyUserClaims, MyUserLogins, MyUserRoles và MyUsers.
Làm thế nào để tôi thực hiện điều này và kết thúc chỉ với một bộ bảng?
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");
}
}
- CẬP NHẬT TRẢ LỜI -
Cảm ơn cả Hao Kung và Peter Stulinski. Điều này đã giải quyết vấn đề của tôi ...
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");
như được đề cập bởi @Sergey. MyUsers
Mặt khác, bảng mới được đặt tên có một cột phân biệt đối xử như @Daskul đã chỉ ra. Ngoài ra, MyUserClaims
cấu trúc bảng của bạn sẽ sai khi @Matt Nhìn chung chỉ ra. Tôi nghĩ rằng ý tưởng để thêm nó xuất phát từ một bình luận cho @Giang trong một blog msDN , nhưng nó sai!