Ich versuche, mit nHibernate diese Linq Abfrage unten zu laufen 3.nHibernate 3 - LEFT JOIN Wieder Linq Lösung
var items = from c in session.Query<tbla>()
join t in session.Query<tblb>() on c.Id equals t.SomeId into t1 // use left join on trades.
from t2 in t1.DefaultIfEmpty()
select new {item = c, desc = t2.Description};
Dies ist die Aktie Weg, um eine LEFT JOIN in Linq meines Wissens durchzuführen. Es gibt mir jedoch eine nicht unterstützte Ausnahmebedingungsnachricht. Wie kann ich einen einfachen Link-Join ohne Rückgriff auf HQL erreichen? Dies scheint etwas albern, dass ein ORM, so weit verbreitet wie nHibernate, etwas nicht unterstützen kann, das so fussläufig ist wie ein linker Join.
[Bearbeiten]
Ich habe unten die richtige Antwort auf meine eigene Frage stellen.
Ich bin verloren. Wo sind die Entsprechungen für "auf c.Id gleich t.SomeId in t1" und "new {item = c, desc = t2.Description}" im Beispiel? Können Sie das Beispiel und/oder die Kommentare erweitern? – mayu
Die angenommene Antwort ist falsch. Warum reichen Sie nicht Ihre eigene Antwort ein? Ich würde dafür stimmen. – mayu
Guter Anruf Ich habe meine Bearbeitung zu einer Antwort verschoben. Die Join-Magie passiert in der SelectList-Klausel dieses Ausdrucks. Hoffentlich hilft das. Die zweite Abfrage ist für die erste Abfrage keine exakte Übereinstimmung, daher gibt es keinen Vergleich zwischen Apple und Apple. – James