Я використовую версію випуску (RTM, не RC) Visual Studio 2013 (завантажена з MSDN 2013-10-18), і тому останню (RTM) версію AspNet.Identity. Коли я створюю новий веб-проект, я вибираю "Індивідуальні облікові записи користувачів" для аутентифікації. Це створює такі таблиці:
- AspNetRoles
- AspNetUserClaims
- AspNetUserLogins
- AspNetUserRoles
- AspNetUsers
Коли я реєструю нового користувача (використовуючи шаблон за замовчуванням), ці таблиці (перераховані вище) створюються, і в таблицю AspNetUsers вставляється запис, який містить:
- Id
- UserName
- PasswordHash
- SecurityStamp
- Дискримінатор
Крім того, додавши загальнодоступні властивості до класу "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");
}
}
- ОНОВЛЕННЯ ВІДПОВІДЬ -
Завдяки і Хао Кунгу, і Петру Стулінським. Це вирішило мою проблему ...
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 General. Я думаю, що ідея додати, що виникла з коментаря до @Giang у блозі msdn , але її неправильна!