Я использую версию выпуска (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");
}