【发布时间】:2010-12-17 21:37:35
【问题描述】:
我有以下 EF 查询:
TestEntities db = new TestEntities();
var questions = from q in db.Questions.Include("QuestionType")
from sq in db.SurveyQuestions
where sq.Survey == surveyTypeID
orderby sq.Order
select q;
foreach( var question in questions ) {
// ERROR: Null Reference Exception
Console.WriteLine("Question Type: " + question.QuestionType.Description);
}
当我访问 QuestionType 属性时,我得到一个空引用异常。我正在使用 Include("QuestionType") 但它似乎不起作用。我做错了什么?
编辑:当我打开延迟加载时,它不会抛出空引用异常。
编辑:当我执行以下操作时,Include() 似乎正在工作:
var questions = db.Questions.Include("QuestionType").Select(q => q);
当我对一个单独的实体进行断言时,Include 似乎失败了。使用包含时不允许这样做吗?我的查询导致这件事不起作用怎么办?
【问题讨论】:
-
数据库或模型中的 Question 和 QuestionType 之间是否存在已定义的关系?
-
是的。启用 LazyLoading 时,它将加载对象。
-
您应该使用 lambdas 而不是“魔术字符串” - 您需要添加“使用 System.Data.Entity” - 请参阅 stackoverflow.com/a/14518244/16940
-
检查、仔细检查、三重检查您的配置是否设置正确!被这个烧死了,我的关系指向了错误的外键
标签: c# entity-framework entity-framework-4