Написание вложенного объединения с помощью LINQ to Entities

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

Проблема должна быть простой:

У меня есть база данных SQL Azure, несколько плохо спроектированная (то есть отсутствуют внешние ключи и тому подобное). Поскольку в данный момент я не могу перепроектировать базу данных, мне приходится обрабатывать отношения вручную с помощью запросов. Поскольку база данных также является узким местом нашего программного обеспечения, я должен попытаться выполнить запросы с минимальным количеством обращений к базе данных.

У меня есть объекты A, B, C и D. Объект A имеет несколько объектов B (связанных с незарегистрированным внешним ключом), объект B имеет несколько объектов C, а объект C имеет несколько объектов D.

У меня есть идентификатор сущности A, и я хотел бы вернуть дерево всех связанных сущностей вплоть до Ds, насколько это возможно.

Начиная с:

from A in dbA.Where(e=>e.Id==IDParameter)
join B in dbB on A.Id equals B.AId into Bs

Теперь мне нужно сделать это с каждым B в Bs для C и снова с Cs для D. Если я пойду по пути obvoius и сначала присоединюсь к Ds и Cs, а затем к Bs и C, и, наконец, к As и B, это означает объединение всех D с Cs, затем все ... вы поймете, пока я наконец не доберусь до фильтра IDParameter. Это просто кажется неэффективным.

Есть ли правильный C # способ сделать это в одном запросе?

Ответы на вопрос(1)

Ваш ответ на вопрос