如何获取角色中的所有用户(Microsoft ASP.NET Identity EntityFramework 2.0.0-beta1)?

时间:2014-03-05 20:59:15

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

我刚刚更新到ASP.NET Identity EntityFramework 2.0.0-beta1并且我的Roles类出现了编译错误。也许有人可以给我一些线索如何让所有用户获得特定角色?

这是非常接近的事情,当我使用Intellisense进行浏览时,我几乎就在那里,但需要提示:-)。

这是更新前的工作方式:

 user.Roles.First().Role.Name.Equals("Admins")

3 个答案:

答案 0 :(得分:10)

它只暴露在EF实现层上,所以:

roleManager.FindByName("Admins").Users

答案 1 :(得分:9)

接受的答案返回CustomUserRoles。如果您要查找ApplicationUsers列表,请尝试:

public IList<ApplicationUser> GetApplicationUsersInRole(string roleName)
{
    var selectedUserIds = from role in roleManager.Roles
                          where role.Name == roleName
                          from user in role.Users
                          select user.UserId;
    // this _users comes from the ApplicationDbContext.ApplicationUser
    return _users.Where(applicationUser => selectedUserIds.Contains(applicationUser.Id)).ToList();
}

答案 2 :(得分:8)

我真的很喜欢VahidN的解决方案,但我稍微修改了一下。我把它变成了一个使用dbcontext的查询。这允许您在查询中添加其他子句(例如已删除,已确认电子邮件等)

public IEnumerable<ApplicationUser> GetApplicationUsersInRole(string roleName)
{
      return from role in context.Roles
             where role.Name == roleName
             from userRoles in role.Users
             join user in context.Users
             on userRoles.UserId equals user.Id
             where user.EmailConfirmed == true
               && user.IsDeleted == false
             select user;
 }

我希望这有帮助! 〜干杯!