LINQ to SQL-Abfragen
Sie definieren LINQ to SQL-Abfragen, indem Sie die gleiche Syntax wie in LINQ verwenden. Der einzige Unterschied besteht darin, dass die in Abfragen referenzierten Objekte den Elementen in einer Datenbank zugeordnet werden. Weitere Informationen finden Sie unter Einführung in LINQ-Abfragen (C#).
LINQ to SQL übersetzt die Abfragen, die Sie in entsprechende SQL-Abfragen schreiben, und sendet diese zur Verarbeitung an den Server. Ihre Anwendung verwendet die LINQ to SQL-API, um die Abfrageausführung anzufordern. Der LINQ to SQL-Anbieter wandelt dann die Abfrage in SQL-Text um und übergibt die Ausführung an den ADO-Anbieter. Der ADO-Anbieter gibt Abfrageergebnisse als DataReader zurück. Der LINQ to SQL-Anbieter übersetzt die ADO-Ergebnisse zu einer IQueryable-Auflistung von Benutzerobjekten.
Die folgende Abbildung veranschaulicht diesen Vorgang.
Diagramm zur Abfrageausführung
Hinweis |
---|
Die meisten Methoden und Operatoren in .NET Framework-internen Datentypen verfügen über direkte Übersetzungen zu SQL.Jene, die LINQ nicht übersetzen kann, generieren Laufzeitausnahmen.Weitere Informationen finden Sie unter SQL CLR-Typzuordnung (LINQ to SQL). |
Die folgende Tabelle zeigt Ähnlichkeiten und Unterschiede zwischen den LINQ-Abfrageelementen und LINQ to SQL-Abfrageelementen.
Element |
LINQ-Abfrage |
LINQ to SQL-Abfrage |
---|---|---|
Rückgabetyp der lokalen Variablen, die die Abfrage (für Abfragen, die Sequenzen zurückgeben) enthält |
Generischer IEnumerable |
Generischer IQueryable |
Angeben der Datenquelle |
Verwendet die From-Klausel (Visual Basic) oder die from-Klausel (C#) |
Gleiche Voraussetzung |
Filtern |
Verwendet die Where/where-Klausel. |
Gleiche Voraussetzung |
Gruppieren |
Verwendet die Group…By/groupby-Klausel. |
Gleiche Voraussetzung |
Auswählen (Projizieren) |
Verwendet die Select/select-Klausel. |
Gleiche Voraussetzung |
Verzögerte und unmittelbare Ausführung |
Gleiche Voraussetzung |
|
Implementieren von Joins |
Verwendet die Join/join-Klausel. |
Kann die Join/join-Klausel verwenden, effektiver ist jedoch das AssociationAttribute-Attribut. Weitere Informationen finden Sie unter Beziehungsübergreifende Abfragen (LINQ to SQL). |
Remoteausführung und lokale Ausführung |
|
Weitere Informationen finden Sie unter Remoteausführung von Abfragen im Vergleich zur lokalen Ausführung (LINQ to SQL). |
Streamingabfragen und gepufferte Abfragen |
Nicht anwendbar auf ein lokales Arbeitsspeicherszenario |
|
Siehe auch
Konzepte
Einführung in LINQ-Abfragen (C#)
Grundlegende LINQ-Abfragevorgänge (C#)
Typbeziehungen in LINQ-Abfragevorgängen (C#)