LINQ-Einschluss und Beitreten Sind sie gleichwertig?
Benutzt habe ich join in linq to join 2 Tabellen. Was ist der Unterschied zwischen einem join und Beinhalten. Von dem, was ich sehe, sind Sie beide Verhalten sich gleich.
Include vs. Join
InformationsquelleAutor der Frage Nate Pet | 2012-09-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer Enthalten ist beabsichtigt, die Erhaltung der ursprünglichen Objekt-Strukturen und Graphen. Ein Join ist erforderlich, um Projekt einer vereinfachten Darstellung des Objekts graph-oder join-Typen, die natürlich nicht durch den Graphen (dh. beitreten die Kunden, die Stadt mit Versand Einrichtung der Stadt).
Vergleichen Sie die folgenden:
db.Customers.Include("Orders")
Erzeugt ein Objekt-graph wie dieser:
Im Gegensatz dazu, wenn Sie das gleiche tun mit einem join, Projektion in einen anonymen Typ, Sie konnte die folgenden:
Während sich die beiden aussprechen können, die gleiche Anforderung an die Datenbank, die daraus resultierende Art kann sehr unterschiedlich sein.
InformationsquelleAutor der Antwort Jim Wooley
In einem Sinne, ja. Enthalten ist implementiert als ein join. Abhängig von der null-Zulässigkeit der enthaltenen link, es ist ein inner oder left join.
Können Sie immer bauen eine selbst mit join, so wie hier:
Dies ist ein "include" für die Nutzer der Stadt. Es manifestiert sich wie ein SQL-join.
InformationsquelleAutor der Antwort usr