我有以下问题
DbSet<UserRole>()
.Where(x => x.EmployeeId == 1407)
.Join(
inner: DbSet<Roles_part>(),
outerKeySelector: _l => _l.RoleId,
innerKeySelector: _r => _r.Id,
resultSelector: (_l, _r) => new {
userId = _l.EmployeeId,
roleId = _r.Id,
roleName = _r.Name
})
.Join(
inner: DbSet<Permission>(),
outerKeySelector: _l => _l.roleId,
innerKeySelector: _r => _r.RoleId,
resultSelector: (_l, _r) => new {
roleId = _l.roleId,
roleName = _l.roleName,
userId = _l.userId,
resourceName = _r.Resource.Name,
resourceId = _r.Resource.Id,
Write = _r.Write,
Delete = _r.Delete,
Modify = _r.Modify,
Read = _r.Read
})
.Join(
inner: DbSet<Employee>(),
outerKeySelector: _l => _l.userId,
innerKeySelector: _r => _r.Id,
resultSelector: (_l, _r) => new {
resourceName = _l.resourceName,
resourceId = _l.resourceId,
Write = _l.Write,
Read = _l.Read,
Modify = _l.Modify,
Delete = _l.Delete,
roleId = _l.roleId,
roleName = _l.roleName,
userId = _r.Id,
userFirstName = _r.FirstName,
userLastName = _r.LastName
})
.GroupBy(
keySelector: resultSet => new { userId = resultSet.userId },
elementSelector: resultSet => resultSet)
.ToList()'
我越来越
无法翻译。以可以翻译的形式重写查询,或者通过插入对“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的调用来显式切换到客户端评估。有关更多信息,请参阅https://go.microsoft.com/fwlink/?linkid=2101038。
我知道 GroupBy 是问题所在,因为如果我删除它,我可以看到我的结果。
关系如下
员工 1-* 用户角色 -1 角色 1- 权限 1-* 资源。
我有兴趣获得以下结构
User : 1
Role : 1
Resource : 1,
Resource : 2,
Role : 2
Resource : 3,
Resource : 4,
所以一个用户可以有一个角色列表,一个角色可以有一个基于角色权限提取的资源列表。