我知道更改查询的形状会导致 Entity Framework 忽略包含调用,但是当我执行 select many 和 group by 时,有没有办法让它加载子属性。在下面的示例中,我想通知在特定时间段内预订工作的所有员工。在 where 之后调用 .ToArray() 只会访问数据库一次,但我正在内存中执行 SelectMany 和 GroupBy。有没有办法让 SelectMany 和 GroupBy 在 SQL 服务器上发生,并且仍然包括 ServiceType 和 Ship 以及 Employee 详细信息?
我正在寻找一种方法来对数据库进行一次 SQL 调用,并最终得到一份在该时间段内有工作的员工列表以及他们被分配到的工作。
var employeeJobs = DataContext.Jobs.
Include("ServiceType").
Include("Ship").
Include("JobEmployees.Employee").
Where(j => j.Start >= now && j.Start <= finish).
OrderBy(j => j.Start).
ToArray().
SelectMany(j => j.JobEmployees, (j, je) => new {
Job = j,
Employee = je.Employee
}).GroupBy(j => j.Employee);