无法从Identity v2中的IdentityUserRole导航到角色名称

时间:2014-03-30 14:37:33

标签: asp.net-identity

在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似乎不再可能进行此类查询。

1 个答案:

答案 0 :(得分:1)

我们可能会在角色管理器上添加一个新的帮助方法,以使角色中的所有用户都可以。我们无法在User和Role上保留导航属性,因为这会导致两个泛型类型的循环引用。这应该在2.1版本中添加。