【发布时间】:2015-11-24 17:58:13
【问题描述】:
我在由 Entity Framework 6.1 代码优先生成的 SQL Server 数据库中有以下(子集):
然后我运行以下查询
var response = await Context.SurveyResponses
.Include(x => x.Answers)
.SingleOrDefaultAsync(x => x.Client.Id == clientId &&
x.Survey.Id == surveyId &&
!x.CompletedOn.HasValue);
在 99% 的情况下,Answers 集合上的 Question 对象将被填充。但是,在 1% 的情况下,它将为空。
通过改进Include 语句解决了这个问题
var response = await Context.SurveyResponses
.Include(x => x.Answers.Select(y => y.Question))
.SingleOrDefaultAsync(x => x.Client.Id == clientId &&
x.Survey.Id == surveyId &&
!x.CompletedOn.HasValue);
但是我想了解的是为什么第一个查询会起作用?它怎么知道包含Answers 对象的Question 属性?为什么它在某些情况下有效,而在其他情况下无效?
【问题讨论】:
标签: c# entity-framework ef-code-first