AspNetUserRoles中的第三列

时间:2014-11-26 12:35:45

标签: c# asp.net-mvc asp.net-mvc-5 asp.net-identity-2

Why Identity 2.0 adds a new column in AspNetUserRoles when I extend IdentityUser?中类似的问题 我的ApplicationUser类:

public class ApplicationUser : IdentityUser
{
  public ApplicationUser()
  {
    Address = new Address ();
  }
  public string Firstname{ get; set; }
  public string Lastname{ get; set; }
  public Address Address{ get; set; }
  public bool IsActivated { get; set; }
}

上下文:

public class DatabaseContext : IdentityDbContext<ApplicationUser>
{
  static DatabaseContext()
  {
    Database.SetInitializer<DatabaseContext>(null);
  }

  public DatabaseContext()
    : base(nameOrConnectionString: "Archive")
  {
  }

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
    base.OnModelCreating(modelBuilder);

    modelBuilder.Entity<IdentityUser>().ToTable("Users").Property(p => p.Id).HasColumnName("Id");
    modelBuilder.Entity<ApplicationUser>().ToTable("Users").Property(p => p.Id).HasColumnName("Id");
}

表AspNetUserRoles中创建的列是:UserId,RoleId和IdentityUser_Id。如果我为用户分配角色,则只填充UserId和RoleId。如果我想检索用户所处的角色,则不会有任何回复。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

实际上,IdentityUserRole表中不应该有名为IdentityUser_Id的列。我希望你首先使用实体​​ramework代码。

尝试更改OnModelCreating方法,如下所示。目前,您已通过继承ApplicationUser创建了IdentityUser表。因此,您不需要为IdentityUser建模绑定。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    modelBuilder.Entity<ApplicationUser>().ToTable("Users");
}

希望这有帮助。