Entity Framework не заполняет контекст - PullRequest
1 голос
/ 15 июня 2010

Я только начинаю с некоторого исследования структуры сущности, я подумал, что пришло время посмотреть, на что все жалуются. Я сталкиваюсь с проблемой, когда сущности, кажется, не возвращают какой-либо контекст объекта. Я сгенерировал модель из базы данных с тремя таблицами, которые связаны между собой.

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}

без проблем с конечной точкой OData с использованием LINQPad. Однако, когда я делаю простой запрос, как

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

Список CanTeach пуст. Я знаю, что в EF все загружено лениво, и, возможно, мой контекст выходит за рамки, когда я смотрю на контекст объекта, однако даже пытаюсь получить контекст объекта, как только запрос запускается, и пустой контекст объекта ,

Что я делаю не так?

Edit:

В дополнение к ответу ниже я обнаружил, что

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

работал для тех, кто ищет более свободный API.

1 Ответ

0 голосов
/ 15 июня 2010

Посмотрите на слово Включить

from a in CanTeach.Include("Instructors")
where a.Instructor.FirstName == "Barry"
select new { Name = a.Instructor.FirstName + " " + a.Instructor.LastName,
            Course = a.Course.Name}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...