是否可以在ApplicationUser类中添加角色作为外键?

时间:2018-05-21 00:38:03

标签: c# asp.net-core asp.net-core-mvc

我想向所有用户展示他们的角色。我想在ApplicationUser类中做类似的事情:

 public string RoleId {get; set;}
 [ForeignKey("RoleId")]
 public UserManager Role {get; set;}

当然这并没有返回正确的结果,但我认为可能有一个解决方法......

1 个答案:

答案 0 :(得分:0)

默认标识模式使用UserRoles表将用户的角色与它们相关联。如果您实施了自定义IdentityDbContext<>,则可以在ApplicationUserUserRoleIdentityRole实施之间创建外键关系。

public class ApplicationUser
{
    public List<UserRole> UserRoles { get; set; }
}

public class UserRole
{
    public string UserId { get; set; }

    [ForeignKey(nameof(UserId))]
    public ApplicationUser User { get; set }

    public string RoleId { get; set; }

    [ForeignKey(nameof(RoleId))]
    public IdentityRole Role { get; set }
}

IQueryable<ApplicationUser> GetUsers(IdentityDb db)
{
    return db.Users.Include(u => u.UserRoles).ThenInclude(ur => ur.Role);
}