在ASP Identity v2之前,您可以这样做..
var context = new ApplicationDbContext();
var role = context.Users.FirstOrDefault().Roles.Single(p => p.Role.Name == "Some role name");
一旦我升级到Identity v2,我的应用程序中的这样的行就停止了编译。 IdentityUserRole上不再有Role属性,因此要查找“Administrators”角色中的所有用户并不容易。
我知道在角色中有其他方法可以找到用户,但我的需求是不同的。这是一个简化的示例,但我需要构建一个具有特定角色信息的特定用户列表,如下所示:
var data = context.Users.Select(p => new
{
Administrator = p.Roles.Any(role => role.Role.Name == "Administrator"),
ServiceProvider = p.Roles.Any(role => role.Role.Name == "ServiceProvider"),
Lender = p.Roles.Any(role => role.Role.Name == "Lender"),
Inspector = p.Roles.Any(role => role.Role.Name == "Inspector")
});
使用Identity v2似乎不再可能进行此类查询。
答案 0 :(得分:1)
我们可能会在角色管理器上添加一个新的帮助方法,以使角色中的所有用户都可以。我们无法在User和Role上保留导航属性,因为这会导致两个泛型类型的循环引用。这应该在2.1版本中添加。