Linq to sql 无法评估

问题描述 投票:0回答:0

我有以下问题

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,

所以一个用户可以有一个角色列表,一个角色可以有一个基于角色权限提取的资源列表。

entity-framework-core linq-to-sql
© www.soinside.com 2019 - 2024. All rights reserved.