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