首页 > 解决方案 > 是否可以在 ApplicationUser 类中添加角色作为外键?

问题描述

我想向所有用户展示他们的角色。我正在考虑在 ApplicationUser 类中做这样的事情:

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

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

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

解决方案


默认身份架构使用UserRoles表将用户的角色与他们关联起来。如果您实现了自定义IdentityDbContext<>您可以在ApplicationUser,UserRoleIdentityRole实现之间创建外键关系。

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);
}

推荐阅读