指定された基準に基づいて学校のリストを取得する次のクエリがあります。注: このデータベースは非常に大きく、10,000 件以上のレコードがあります。最終結果は 188 校のリストであり、まさに必要としているものです。
return (from s in Context.Schools
join d in Context.Districts on s.DistrictID equals d.DistrictID
join r in Context.Rosters on s.SchoolID equals r.SchoolID
join te in Context.TestEvents on r.TestEventID equals te.TestEventID
join ta in Context.TestAdministrations on te.TestAdministrationID equals ta.TestAdministrationID
join sr in Context.ScoreResults on r.RosterID equals sr.RosterID into exists
from any in exists.DefaultIfEmpty()
where d.DistrictID == DistrictID
&& ta.SchoolYearID == SchoolYearID.Value
select s)
.Distinct()
.OrderBy(x => x.Name)
.ToList();
問題は、return Json(Schools, JsonRequestBehavior.AllowGet);
私たちが学校をクライアントに送り返すために電話をかけたときに、操作がタイムアウトになることです。コードをステップ実行すると、何らかの理由で DbContext がこの結果セットのすべてのプロパティ (不要なものを含む) を取り込もうとしていることがわかります。Schools
このオブジェクトには、データベースから必要なものがすべて揃っています。戻って、関連するすべてのオブジェクトの作成を開始するのはなぜですか。これを止める方法はありますか?
これは、EF 5 Code First を使用した MVC アプリケーションです。