Gravando uma associação aninhada com LINQ to Entities

Tenho certeza de que há um exemplo disso em algum lugar aqui, simplesmente não consigo encontrá-lo porque não conheço os termos exatos. Então, por favor, seja gentil.

O problema deve ser simples:

Eu tenho um banco de dados SQL do Azure, um pouco mal projetado (ou seja, falta de chaves estrangeiras e outras). Como não posso redesenhar o banco de dados neste momento, tenho que lidar com relações manualmente por meio de consultas. Como o banco de dados também é o gargalo do nosso software, preciso tentar concluir as consultas com o menor número possível de acertos no banco de dados.

Eu tenho as entidades A, B, C e D. Uma entidade A tem várias entidades B (conectada a uma chave estrangeira não registrada), uma entidade B possui várias entidades C e uma entidade C possui várias entidades D.

Eu tenho o ID da entidade A e gostaria de retornar uma árvore de todas as entidades conectadas até Ds, da melhor maneira possível.

Começando:

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

Agora, eu precisaria fazer isso com todos os B em Bs para C e novamente com Cs para D. significa juntar todos os Ds com Cs, então todos ... você entendeu, até que finalmente chegue ao filtro IDParameter. Parece apenas ineficaz.

Existe uma maneira C # adequada de fazer isso em uma única consulta?

questionAnswers(1)

yourAnswerToTheQuestion