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