Was ist der Unterschied zwischen "LINQ to Entities", "LINQ to SQL" und "LINQ to Dataset"?
Habe ich gearbeitet für eine Weile jetzt mit LINQ. Jedoch, es bleibt ein wenig ein Rätsel, was die wirklichen Unterschiede sind zwischen den genannten Aromen von LINQ.
Die erfolgreiche Antwort enthält eine kurze Differenzierung zwischen Ihnen. Was ist das Hauptziel eines jeden Geschmack, was ist der nutzen, und da ist die Leistung auswirken...
P. S.
Ich weiß, dass es eine Menge von Informationsquellen gibt, aber ich bin auf der Suche nach einer Art "Spickzettel", die anweist, ein Neuling, wo man den Kopf für ein bestimmtes Ziel.
InformationsquelleAutor der Frage Marcel | 2010-03-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
alle von Ihnen sind LINQ - Language Integrated Query - damit Sie alle teilen eine Menge Gemeinsamkeiten. All diese "Dialekte" im Grunde können Sie eine query-Stil auswählen von Daten aus verschiedenen Quellen.
Linq-to-SQL ist Microsofts Erster Versuch, ein ORM - Object-Relational-Mapper. Es unterstützt nur SQL-Server. Es ist ein mapping-Technologie zum anzeigen von SQL Server-Datenbank-Tabellen .NET-Objekte.
Linq-to-Entities ist die gleiche Idee, aber mit Entity Framework in den hintergrund, als die ORM - wieder von Microsoft, aber die Unterstützung für mehrere Datenbank-backends
Linq to DataSets ist LINQ, aber die Verwendung ist gegen die "old-style" ADO.NET 2.0 von DataSets - in den Zeiten, bevor ORM von Microsoft, alles, was Sie tun konnte, mit ADO.NET wurde wieder DataSets, DataTables etc. ist., und Linq to DataSets Abfragen, die diese Daten speichert, die für Daten. Also in diesem Fall, Sie würde wieder in eine DataTable oder DataSets (System.Data-namespace) aus einem Datenbank-backend, und dann die Abfrage mithilfe der LINQ-syntax
InformationsquelleAutor der Antwort marc_s
LINQ ist ein breites Spektrum von Technologien, um (zum Beispiel) eine query comprehension-syntax, zum Beispiel:
zugeordnet ist, die durch den compiler in code:
und hier die real Magie beginnt. Beachten Sie, dass wir noch nicht gesagt, was
Foo
ist hier - und der compiler kümmert sich nicht! Solange es beheben kann einige geeigneten Methode, genanntWhere
können, nehmen Sie einen lambda-Ausdruck, und das Resultat hat einigeSelect
Methode, die akzeptieren können die lambda, ist es glücklich.Nun bedenkt, dass der lambda-Ausdruck kompiliert werden kann entweder in eine anonyme Methode (delegieren, für LINQ-to-Objekte, die umfasst LINQ-to-DataSet), oderum einen Ausdruck-Baum (ein Laufzeit-Modell, stellt die lambda in ein Objekt-Modell).
In-memory-Daten (in der Regel
IEnumerable<T>
), es führt die Stellvertretung - gut und schnell. Aber fürIQueryable<T>
die Objekt-Darstellung des Ausdrucks (aLambdaExpression<...>
) es können, ziehen es auseinander und wendet Sie auf alle "LINQ-zu-Etwas" - Beispiel.Für Datenbanken (LINQ-to-SQL, LINQ-to-Entities) dies könnte bedeuten, schreiben TSQL, zum Beispiel:
Aber es könnte (für ADO.NET Data Services, zum Beispiel) bedeutet das schreiben eine HTTP-Abfrage.
Ausführung einer gut geschriebenen TSQL-Abfrage, gibt eine kleine Menge von Daten ist schneller als das laden einer gesamten Datenbank, die über das Netzwerk und dann die Filterung auf dem client. Beide haben ideale Szenarien und-nur-falsch-Szenarien, obwohl.
Das Ziel und der Vorteil ist hier, um Ihnen zu erlauben, zu einem einzigen, statischen-überprüft syntax zur Abfrage einer Vielzahl von Daten-Quellen, und um den code mehr expressive ("traditionelle" code-Gruppe Daten, zum Beispiel, ist nicht ganz klar, was es versucht zu tun - es ist verloren in der Masse der code).
InformationsquelleAutor der Antwort Marc Gravell
LINQ steht für language integrated query. Es ermöglicht Ihnen die Verwendung von "SQL-Stil" - Abfrage-Sprache, die direkt in C# zum extrahieren von Informationen aus Datenquellen.
Dass Daten, die Quelle könnte auch eine XML-Datei - Linq to XML.
Oder auch nur eine Collection-Klasse von einfachen Objekten - Linq to Objects.
LINQ beschreibt die Abfragen Technologie, der rest der name beschreibt die Herkunft der Daten abgefragt werden.
Für ein wenig mehr hintergrund:
Datensätze sind ADO.net Objekte, in denen Daten aus einer Datenbank geladen wird, in eine .net-Dataset und Linq verwendet werden kann, um Abfragen, die Daten, nachdem Sie geladen ist.
Mit Linq to SQLdie Sie definieren .net-Klassen, die Karte, um die Datenbank und Linq-to-SQL kümmert sich um das laden der Daten aus der SQL server-Datenbank
Und schließlich die Entity framework ist ein system, in dem Sie definieren können, ein Datenbank-und Objekt-mapping im XML und können, dann verwenden Sie Linq-Abfragen, die Daten, die geladen wird über diese Zuordnung.
InformationsquelleAutor der Antwort Simon P Stevens