現在の MVC4.0 プロジェクトでは、Entity Framework 4.1 データベースの最初のモデルを使用しています。
この構造の一部には、次の表が含まれます
compGroupData SurveyData セカンダリデータ
compGroupData と SurveyData はデータベースで結合されていません
SecondaryData は、外部キーを介して 1 対 1 の関係で SurveyData に結合されます
私のプロジェクトでは、次のように定義されたクラス ComparisonWithData があります。
public class ComparisonWithData
{
public compGroupData compgrp { get; set; }
public SurveyData surveydata { get; set; }
public ComparisonWithData()
{
compgrp = new compGroupData();
surveydata = new SurveyData();
}
}
これにより、特定の比較グループとこれに一致するデータの結果セットが得られます。
過去に、次のクエリを使用してこのデータを取得しました。
List<ComparisonWithData> comparisonwithdata = ((from compgrp in db.compGroupDatas
where compgrp.grpYear == rptyear && compgrp.CompGroupID == ccompgrp.CompGrpID
join surveydata in db.SurveyDatas on new { compgrp.companyid, SurveyYear = (Int32)compgrp.SurveyYear } equals new { companyid = surveydata.companyid, SurveyYear = surveydata.surveyyear }
select new ComparisonWithData
{
compgrp = compgrp,
surveydata = surveydata,
}
)).ToList();
最近のデータの変更により、SecondaryData も参照する必要がありますが、レコードの数が多いため、Lazy ではなく Eagerly をロードするためにこれが本当に必要です。(ループ中の遅延読み込みにより、何千もの DB 呼び出しが発生します)
私は、調査データで「インクルード」メソッドを使用するだけでなく、最初のクエリを ObjectQuery としてキャストし、それをインクルードすることも検討しました。
最初のメソッドは熱心な読み込みを行わず、2 番目のメソッドは結果として常に null オブジェクトを返すようです。
SurveyData の SecondaryData を Eager ロードする方法はありますか、それとも別のアプローチを一緒に検討する必要がありますか。
これに関する私の唯一の制限は、.Net 4.5 の制限により EF5 に移行できないことです。
どんな援助でも大歓迎です。
ありがとうございました。