我刚刚更新到ASP.NET Identity EntityFramework 2.0.0-beta1并且我的Roles类出现了编译错误。也许有人可以给我一些线索如何让所有用户获得特定角色?
这是非常接近的事情,当我使用Intellisense进行浏览时,我几乎就在那里,但需要提示:-)。
这是更新前的工作方式:
user.Roles.First().Role.Name.Equals("Admins")
答案 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;
}
我希望这有帮助! 〜干杯!