1
我想将以下SQL映射到EF查询。我发现了一些类似的主题,但仍未能实现映射。 {0} ... {2}是SQL参数。将SQL与JOIN,GROUP BY和SUM映射到实体框架查询
SELECT TaskGroup.Project AS Project
SUM(Datediff(minute, WorkLog.StartTime, WorkLog.EndTime))/60 AS Hours
FROM WorkLog INNER JOIN TaskDefinition ON WorkLog.TaskDefinitionID = TaskDefinition.ID
INNER JOIN TaskGroup ON TaskDefinition.TaskGroupID = TaskGroup.ID
WHERE WorkLog.EmployeeID = {0} AND WorkLog.Status = 5 AND
WorkLog.StartTime >= {1} AND WorkLog.EndTime < {2}
GROUP BY TaskGroup.Project
我会将此标记为已解决但请注意以下事项:GROUP BY将不会在数据库服务器上执行,而是在本地执行。这意味着必须从服务器检索所有相关的数据行,对于大型表而言,这是一个巨大的性能损失。看来,.NET Core 2还不能创建高效的GROUP BY查询。 – Marko
你确定吗?我刚刚测试了一个类似的查询(加入,选择,分组和选择)并使用'context.Database.Log = s => System.Diagnostics.Debug.Write(s);'我注意到只有一个查询在SQL Server中执行,并且此查询正在执行组(由于我没有使用EF Core,我在.Net Framework 4.6.1中使用EF 6.1.3) –
是的,使用EF核心,如果您设置本地分组抛出异常(而不是警告),它确实发生。 – Marko