1
次のSQLをEFクエリにマップしたいと思います。私はいくつかの同様のトピックを見つけましたが、まだマッピングを達成することに失敗しました。 {0} ... {2}はSQLパラメータです。JOIN、GROUP BY、およびSUMを使用したSQLとEntity Frameworkクエリのクエリ
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はDBサーバーでは実行されず、代わりにlocalyが実行されます。つまり、関連するすべてのデータ行をサーバーから取得する必要があります。大きな表の場合は、パフォーマンスが大幅に低下します。 .NET Core 2はまだ効率的なGROUP BYクエリを作成できません。 – Marko
本当ですか?私はちょうど似たようなクエリをテストしました(join、select、group by、select)し、 'context.Database.Log = s => System.Diagnostics.Debug.Write(s);' SQL Serverで実行され、このクエリはグループを実行しています(私はEF Coreを使用していません、.NET Framework 4.6.1でEF 6.1.3を使用しています) –
ローカルグループを設定すると、 (警告の代わりに)例外をスローするには、それは起こります。 – Marko