我正在使用 Visual Studio 2013 的发布版本(RTM,而不是 RC)(从 MSDN 2013-10-18 下载),因此是 AspNet.Identity 的最新 (RTM) 版本。当我创建一个新的 Web 项目时,我选择“个人用户帐户”进行身份验证。这将创建以下表格:
- AspNet 角色
- AspNetUserClaims
- AspNetUserLogins
- AspNetUserRoles
- AspNet 用户
当我注册一个新用户(使用默认模板)时,这些表(上面列出的)被创建并且 AspNetUsers 表插入了一条记录,其中包含:
- ID
- 用户名
- 密码哈希
- 安全邮票
- 鉴别器
此外,通过向“ApplicationUser”类添加公共属性,我成功地向 AspNetUsers 表添加了其他字段,例如“FirstName”、“LastName”、“PhoneNumber”等。
这是我的问题。有没有办法更改上述表的名称(当它们第一次创建时)或者它们总是用AspNet
我上面列出的前缀命名?如果表名可以不同的命名,请说明如何命名。
- 更新 -
我实施了@Hao Kung 的解决方案。它确实创建了一个新表(例如我称之为 MyUsers),但它仍然创建了 AspNetUsers 表。目标是用“MyUsers”表替换“AspNetUsers”表。请参阅下面的代码和创建的表的数据库图像。
我实际上想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");
}