【发布时间】:2014-12-04 01:26:27
【问题描述】:
我有一个带有 ASP.NET Identity 2.0 和 EF 6.1.1 的新 MVC5 项目。
我添加了自己的 ApplicationUser(基于内置 IdentityUser)。这就是我的 DbContext 的创建方式。
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
创建数据库后,我有像 AspNetUsers、AspNetUserRoles、AspNetUserClaims 和 AspNetUserLogins 这样的表。然后我添加了仅包含最基本语句的 OnModelCreating()。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<IdentityUserLogin>().HasKey<string>(l => l.UserId);
modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.RoleId, r.UserId });
}
添加 OnModelCreating() 后,身份表会自动重命名为 ApplicationUsers、IdentityUserRoles、IdentityUserClaims 和 IdentityUserLogins。这对我来说很好(而且我知道如何重命名它们)。
但我不喜欢的是:突然之间,IdentityUserRoles、IdentityUserClaims 和 IdentityUserLogins 有了一个名为“ApplicationUser_Id”的额外字段。原来的“AspNetXXX”表没有这样的字段。
这是为什么呢?为了避免这种情况,我能做些什么吗?
【问题讨论】:
标签: ef-code-first asp.net-identity