我有这个匿名类型,我正在通过存储库调用构建实体框架,但我收到此错误:f
下面的代码只从一个数据库中提取,所以我不明白为什么要提出这个。< / p>
The specified LINQ expression contains references to queries that are associated with different contexts.
当我在最后调用上面的ToList()方法时(为了减少对db的调用直到结束),我得到了上面提到的关于多个上下文的错误。它们都来自同一个数据库,只是不同的表,为什么这仍然被抛出,我怎么能修复它才能只调用一次数据库呢?
修改
阅读方法:
// listOfReportIDs is a list of ints
var reports = BusinessLogic.Repository.Read<Report>().Where(r => listOfReportIDs.Contains(r.ReportID));
var huForm = BusinessLogic.Repository.Read<HumanCase>().Where(h => listOfReportIDs.Contains(h.ReportID));
var anForm = BusinessLogic.Repository.Read<AnimalCase>().Where(a => listOfReportIDs.Contains(a.ReportID));
var reportSummaryData = from r in reports
from h in huForm.Where(h => h.ReportID == r.ReportID)
from a in anForm.Where(a => a.ReportID == r.ReportID)
select new
{
CDC_ReportID = r.CDCReportID,
StateReportID = r.StateReportID,
r.ReportDate,
ReportStatus = r.LookupReportStatus.LookupReportStatusName,
r.AuthorID,
h.HumanComment,
a.AnimalComment
};
var reportData = reportSummaryData.ToList();
答案 0 :(得分:0)
多个上下文是指报告,huForm和anForm。您需要将它们移动到相同的上下文,或使用单独的查询从数据库中获取数据,然后加入然后加入结果。
这些读取中的每一个都为您提供了单独的上下文。您需要抽象数据库连接,然后继承到每个模型。