How to get all users in Role (Microsoft ASP.NET Identity EntityFramework 2.0.0-beta1)?

前端 未结 3 1310
我在风中等你
我在风中等你 2020-12-09 20:57

I just updated to ASP.NET Identity EntityFramework 2.0.0-beta1 and got a compilation errors for my Roles classes. Maybe somebody can give me some clue how to get all users f

相关标签:
3条回答
  • 2020-12-09 21:24

    Its only exposed on the EF implementation layer so:

    roleManager.FindByName("Admins").Users
    
    0 讨论(0)
  • 2020-12-09 21:42

    The accepted answer returns CustomUserRoles. If you are looking for the list of ApplicationUsers, try:

    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();
    }
    
    0 讨论(0)
  • 2020-12-09 21:46

    I really liked VahidN's solution, but I modified it a bit. I made it into one query that uses the dbcontext. This allows you to add additional clauses into the query (e.g. deleted, emailconfirmed, etc.)

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

    I hope this helps! ~Cheers!

    0 讨论(0)
提交回复
热议问题