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。如果我想检索用户的角色,则不会返回任何内容。
我做错了什么?
实际上,在IdentityUserRole表中不应该有名为IdentityUser_Id的列。我希望您首先使用实体分支代码方法。
尝试更改OnModelCreating
方法,如下所示。目前,您已通过继承IdentityUser
创建了ApplicationUser
表。这样,您就不需要为IdentityUser
绑定建模。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<ApplicationUser>().ToTable("Users");
}
希望这有帮助。