这可能是“走得太深”的情况,但我想我还是会问。我有以下型号:
public class Exam
{
public int ID {get; set;}
//...other Exam properties
public virtual ICollection<ExamResults> Results {get; set;}
}
public class ExamResults
{
public int ExamId {get; set;}
//...other Exam Result properties
public int ExamDomainId {get; set;}
public virtual ExamDomain ExamDomain {get; set;}
}
public class ExamDomain
{
public int ID {get; set;}
public String DomainName {get; set;}
//...more stuff
}
所以用简单的英语来说,一个考试有一个考试结果的集合。每个 ExamResult 都有一个 ExamDomain,每个 ExamDomain 都有一个名称。
问题是这样的:我的视图每次使用时都会创建一个新的数据库查询
@Html.DisplayFor(e => e.exampleResult.ExamDomain.DomainName)
我不能在初始控制器查询中包含 ExamDomain,因为 Exam 没有 Exam 的导航属性。例子:
//The below does not work because ExamResults is a collection, not a record
var exam = db.Exams.Include(e => e.ExamResults.ExamDomain)...
//The code below also does not work, but it does run
var exam = db.Exams.Include(e =
话虽如此,如何在不为每个 ExamResult 运行额外查询的情况下从 ExamDomain 表中获取所有必要的域名?
PS:我确实有一个视图模型,但这对于这个问题的目的来说并不重要。