实体框架没有填充上下文

时间:2010-06-15 18:23:29

标签: asp.net-mvc entity-framework

我刚开始进行一些实体框架探索,我认为现在是时候看看每个人都抱怨了什么。我遇到的问题是实体似乎没有返回任何对象上下文。我从一个数据库生成了模型,该数据库有三个相互链接的表。

Courses
Instructors
CanTeach

关系正如您所期望的那样:课程可以与多个CanTeach实体相关,教师也可以与多个CanTeach实体相关。我还为我的项目添加了OData服务,该服务也使用了相同的模型。所以我可以运行像

这样的查询
from a in CanTeach
where a.Instructor.FirstName == "Barry"
select new { Name = a.Instructor.FirstName + " " + a.Instructor.LastName,
   Course = a.Course.Name}

使用LINQPad对OData端点没有问题。但是,当我做一个简单的查询,如

public Instructor GetInstructorFromID(int ID)
{
    return context.Instructors.Where(i => i.ID == ID).FirstOrDefault();
}

CanTeach列表为空。我知道EF中的所有内容都是延迟加载的,当我查看对象上下文时,我的上下文可能超出了范围,但是即使在查询运行时尝试获取对象上下文也会导致空对象上下文。

我做错了什么?

修改

除了下面的答案,我发现

return context.Instructors.Include("CanTeach").Where(i => i.ID == ID).FirstOrDefault();

适合那些寻求更流畅API的人。

1 个答案:

答案 0 :(得分:0)

查找“包含”一词

from a in CanTeach.Include("Instructors")
where a.Instructor.FirstName == "Barry"
select new { Name = a.Instructor.FirstName + " " + a.Instructor.LastName,
            Course = a.Course.Name}