AspNetUserRoles 中的第三列

本文关键字:三列 AspNetUserRoles | 更新日期: 2023-09-27 18:32:00

与为什么Identity 2.0在扩展IdentityUser时在AspNetUserRoles中添加一个新列类似的问题?我的应用程序用户类:

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。如果我为用户分配角色,则只会填充用户 ID 和角色 ID。如果我想检索用户的角色,则不会返回任何内容。

我做错了什么?

AspNetUserRoles 中的第三列

实际上,在IdentityUserRole表中不应该有名为IdentityUser_Id的列。我希望您首先使用实体分支代码方法。

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

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
    modelBuilder.Entity<ApplicationUser>().ToTable("Users");
}

希望这有帮助。