Schreiben eines verschachtelten Joins mit LINQ to Entities

Ich bin mir ziemlich sicher, dass es irgendwo hier ein Beispiel dafür gibt. Ich kann es einfach nicht finden, da ich die genauen Begriffe nicht kenne. Also bitte, sei nett.

Das Problem sollte einfach sein:

Ich habe eine Azure SQL-Datenbank, die etwas schlecht gestaltet ist (dh es fehlen Fremdschlüssel und dergleichen). Da ich die Datenbank derzeit nicht neu gestalten kann, muss ich die Beziehungen manuell über Abfragen bearbeiten. Da die Datenbank auch der Engpass unserer Software ist, muss ich versuchen, Abfragen mit so wenig Datenbank-Treffern wie möglich abzuschließen.

Ich habe Entitäten A, B, C und D. Eine Entität A hat mehrere Entitäten B (verbunden mit einem nicht registrierten Fremdschlüssel), eine Entität B hat mehrere Entitäten C und eine Entität C hat mehrere Entitäten D.

Ich habe die ID der Entität A und möchte einen Baum aller verbundenen Entitäten bis zu Ds so optimal wie möglich zurückgeben.

Start off:

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

Nun müsste ich das mit jedem B in Bs für C und noch einmal mit Cs für D machen. Wenn ich den obvoius-Weg gehe und erst Ds und Cs und dann Bs und Cs und schließlich As und Bs verbinde, Das bedeutet, dass Sie alle Ds mit Cs verbinden und dann alle ... Sie verstehen, bis ich endlich zum IDParameter-Filter komme. Es scheint nur unwirksam.

Gibt es eine geeignete C # -Methode, um dies in einer einzelnen Abfrage zu tun?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage