Я пытаюсь получить все объекты, где Чайлдс ParentID приравнивает идентификатор страницы я наГде на ребенка родительского объекта
Это то, что я пытаюсь сделать:
public IEnumerable<Route> GetAll(int locationId)
{
_db.Configuration.ProxyCreationEnabled = false;
return _db.Routes.Include(o => o.ConnectionPointRoutes.Select(s => s.Segment))
.Include(o => o.ConnectionPointRoutes.Select(c => c.ConnectionPoint)
.Where(c => c.Location.LocationId == locationId)).ToList();
}
, но я получаю эта ошибка:
исключение типа «System.ArgumentException» произошло в EntityFramework.dll, но не был обработан в пользовательском коде
Дополнительная информация: выражение Include path должно ссылаться на свойство навигации , определенное для типа. Используйте пунктирные пути для свойств ориентировочной навигации и оператора Select для коллекции свойства навигации.
Любые мысли?
Похоже c.Location является объект списка, так что вам нужно c.Location.Select (х => ......). У вас есть таблица с несколькими поколениями, такая как идентификатор Grand-Grand-Parent, Grand Parent ID, родительский идентификатор, идентификатор ребенка? Если это так, вам может понадобиться использовать рекурсивный алгоритм для получения всех уровней. Linq будет работать только для одного поколения. – jdweng
Я не думаю, что 'Where' поддерживается внутри' Include'. –
Я нашел способ его исправить, проверить ответ, если вам интересно :) –