在当前的 MVC4.0 项目中,我使用的是 Entity Framework 4.1 Database first 模型。
该结构的一部分包括以下表格
compGroupData 调查数据 SecondaryData
compGroupData 和 SurveyData 未加入数据库
SecondaryData 通过外键 SurveyData.surveydatakey = SecondaryData.surveydatakey 以一对一的关系加入到 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 但由于记录的数量确实需要它来急切地加载而不是延迟加载。(循环期间的延迟加载会导致数以千计的数据库调用)
我已经研究过在调查数据上使用“包含”方法以及将初始查询转换为 ObjectQuery 并执行包含。
第一种方法不急于加载,第二种方法似乎总是返回一个空对象作为结果。
是否有一种方法可以为 SurveyData 加载 SecondaryData,或者我应该一起寻找不同的方法。
我对此的唯一限制是由于我们对 .Net 4.5 的限制,我无法升级到 EF5
任何帮助将不胜感激。
谢谢你。