У меня есть три объекта, сгенерированные Entity Framework. Один из них - event
, и это свойство навигации называется frogs
и user_bookings
. Я опубликовал связанный с ним вопрос до того, как выполнить подзапрос, который, похоже, работает, но он мешает мне отменить ленивую загрузку свойства.Переопределить ленивую загрузку анонимного типа с помощью LINQ для объекта
var evts = from evt in context.events.Include("frogs")
where evt.event_id < 10
select evt;
Это работает - навигационное свойство frogs
загружается.
Однако, когда я изменить LINQ к этому:
var evts = from evt in context.events.Include("frogs")
where evt.event_id < 10
select new
{
Event = evt,
HasBooked = evt.user_bookings.Any(x => x.user_id == 1)
};
Я получаю ошибку, пытаясь не получить доступ к frogs
, потому что ObjectContext больше не существует. Я попытался удалить виртуальный из определения класса для класса event
, но это просто приводит к пустым спискам лягушек, когда они определенно существуют!
«потому что ObjectContext больше не существует», почему бы это быть? Конечно, не из-за какого-то кода, размещенного здесь. – usr
Да, я думаю, я знаю, почему появляется сообщение. Данные пытаются получить, когда я попрошу об этом для представления, которое отображает его, и к этому времени оно было удалено. Мой вопрос заключается в том, что мне нужно сделать, чтобы заставить его загружать данные во время запроса для второго варианта? Я знаю, что я могу добавить 'include' в первом примере, но это не работает для второго, поэтому я предполагаю, что он не находится в правильном месте, когда добавлена часть' select new'. –