我正在使用Visual Studio 2013的发行版(RTM,而不是RC)(从MSDN 2013-10-18下载),因此使用的是AspNet.Identity的最新(RTM)版本。创建新的Web项目时,我选择“个人用户帐户”进行身份验证。这将创建下表:
- AspNetRoles
- AspNetUserClaims
- AspNetUserLogins
- AspNetUserRoles
- AspNetUsers
当我注册新用户(使用默认模板)时,将创建这些表(上面列出),并且AspNetUsers表插入了一条记录,其中包含:
- ID
- 用户名
- 密码哈希
- 安全邮票
- 鉴别器
此外,通过将公共属性添加到“ 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");
}
}
-更新答案-
感谢郝Ha和彼得·史蒂林斯基。这解决了我的问题...
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");
}