在ASP Identity v2之前,您可以这样做..
var context = new ApplicationDbContext();
var role = context.Users.FirstOrDefault().Roles.Single(p => p.Role.Name == "Some role name");
Run Code Online (Sandbox Code Playgroud)
一旦我升级到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")
});
Run Code Online (Sandbox Code Playgroud)
使用Identity v2似乎不再可能进行此类查询.
我们可能会在角色管理器上添加一个新的帮助器方法,以使所有用户都处于一个角色中。我们无法同时保留用户和角色的导航属性,因为这会导致两个泛型类型的循环引用。这应该在 2.1 版本中添加。
| 归档时间: |
|
| 查看次数: |
1555 次 |
| 最近记录: |