Иногда предложение include игнорируется. У меня не все в голове, но объединение, группировка и проецирование объектов заставят EF игнорировать включения.
В вашем примере, если вы сделаете:
var Tests = from ct in context.CourseTest join uc in context.UserCourse on ct.CourseID equals uc.CourseID select ct;
return Tests.Include("Test").ToList();
Это будет работать, потому что включение не переопределяется проекцией, группировкой или предложением присоединения.
Просто другие вещи:
1/Ваше предложение о присоединении действительно полезно? (только в том случае, если вы хотите, чтобы тест курса, у muse был пользовательский курс.)
2/ для вашего расположенного контекста, это потому, что ваш DbContext использует ленивую загрузку. Ваше предложение include игнорируется, но с отложенной загрузкой вместо null свойство тестовой навигации содержит прокси (т.е. не равно null). Поэтому, когда вы обращаетесь к своему свойству навигации, прокси-сервер видит, что реальные данные не загружены, и выполняет запрос для получения тестовых данных. Ваш контекст расположен, поэтому у вас есть исключение.
EF генерирует запрос, но выполняет запрос только при повторении результата (в цикле foreach или с помощью ToList(), ToArray(), ToDictionary(),...). Поэтому, если вы используете уровень доступа к данным с использованием предложения using для вашего контекста , всегда обязательно повторяйте свой результат, чтобы заставить EF выполнить запрос (например, с помощью ToList()).
person
Nicolas
schedule
17.04.2014