获取角色的所有用户或用户的所有角色

时间:2016-07-19 03:42:59

标签: asp.net entity-framework-6 asp.net-identity

我正在使用Identity 2EF 6,我想获取一个用户ID的角色对象列表或roleId的用户对象列表。

IEnumerable<TRole> GetUserRoles<TRole>(string userId) where TRole : class, IRole<string>

IEnumerable<TUser> GetRoleUsers<TUser>(string roleId) where TUser : class, IUser<string>

实体框架似乎没有公开TUserTRole之间关系的链接表,所以即使使用EF也似乎很棘手。

看起来有效接近的唯一方法是使用SQL直接查询数据库。

有没有人有解决方案在框架内实现这些方法?

1 个答案:

答案 0 :(得分:2)

如果您需要Entity Framework解决方案,则可以使用类似SQL的查询表达式

public IEnumerable<TRole> GetUserRoles<TRole>(string userId) where TRole : class, IRole<string>
{
    return (from ur in db.Set<IdentityUserRole>()
            where ur.UserId == userId
            join r in db.Roles on ur.RoleId equals r.Id
            select r) as IEnumerable<TRole>;
}

public IEnumerable<TUser> GetRoleUsers<TUser>(string roleId) where TUser : class, IUser<string>
{
    return (from ur in db.Set<IdentityUserRole>()
            where ur.RoleId == roleId
            join u in db.Users on ur.UserId equals u.Id
            select u) as IEnumerable<TUser>;
}