8

クエリの形状を変更すると、Entity Framework がインクルード呼び出しを無視することはわかっていますが、select many と group by を実行するときにサブ プロパティをロードする方法はありますか。次の例では、特定の期間に仕事が予約されているすべての従業員に通知したいと考えています。where の後に .ToArray() を呼び出すと、データベースに 1 回しかヒットしませんが、メモリ内で SelectMany と GroupBy を実行しています。SelectMany と GroupBy を SQL サーバーで実行し、ServiceType と Ship と Employee の詳細を含める方法はありますか?

データベースに対して 1 つの 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);
4

3 に答える 3

0

ビューを作成して、これを EF から参照してみませんか? 、これには、アプリ サーバーではなく、データベース サーバーが作業を行うという追加の利点もあります。

于 2012-09-19T11:27:19.313 に答える
-1

あなたのgroupbyの後にInclude()を最後に移動しようとしています。

于 2014-03-18T21:16:37.487 に答える