Следующий запрос не удается загрузить таблицы, когда я выполняю его:жадная загрузка в Entity Framework не будет работать на сложном запросе
IEnumerable<Bookmark> tempBookmarks = ListBookmarksByUserID(userID);
IEnumerable<CandidateWithBookmarks> results = (from c in _internshipEntities.CandidateSet
.Include("education")
.Include("progress")
.Include("contacts")
.Include("availability")
.Include("hosttypes")
.Include("hostsizes")
.Include("hostcapacities")
.Include("hoststates")
.Include("users")
join b in tempBookmarks on c.ID equals b.candidates.ID
select new CandidateWithBookmarks()
{CandidateObject = c, BookmarkObject = b});
return results;
я нашел несколько статей, связанных с проблемой, а именно Alex James' article "How to make Include really Include". Решение поставляется с одной оговоркой:
Для этого, чтобы работать ваши конечные выберите должны быть объекты, т.е. выберите запись, а не выбрать новый {...}
что, очевидно, является проблемой для вышеупомянутого блока код. Существуют ли какие-либо другие известные проблемы, связанные с этой проблемой, которые не нарушают нетерпимую загрузку?
В Entity Framework отсутствует концепция принудительной загрузки. Вы можете запросить загрузку, но вы не можете заставить ее. Вы можете обойти это, но если кто-то еще позже изменит код, вы, скорее всего, вернетесь к квадрату, поэтому убедитесь, что вы проверяете свойство IsLoaded! –
Спасибо за подсказку, что помогает значительно. –