Freigeben über


Übersicht über LINQ to DataSet

Aktualisiert: November 2007

Das DataSet ist eine der am meisten verwendeten Komponenten von ADO.NET. Es ist eines der Schlüsselelemente des nicht verbundenen Programmierungsmodells, auf dem ADO.NET basiert, und versetzt Sie in die Lage, Daten aus unterschiedlichen Datenquellen explizit zwischenzuspeichern. Für die Darstellungsebene arbeitet das DataSet eng mit GUI-Steuerelementen für die Datenbindung zusammen. Für die mittlere Ebene stellt es einen Cache bereit, in dem die relationale Form von Daten zwischengespeichert wird, und es bietet Dienste für die schnelle und einfache Navigation in Abfragen und Hierarchien. Um die Anzahl der Anfragen bei einer Datenbank zu reduzieren, wird das DataSet häufig als Zwischenspeicher in der mittleren Ebene verwendet. Stellen Sie sich zur Veranschaulichung eine datengesteuerte ASP.NET-Webanwendung vor. Ein beträchtlicher Teil der Anwendung weist keine häufigen Änderungen auf und bleibt auch über Sitzungsgrenzen hinweg und bei verschiedenen Benutzern unverändert. Diese Daten können im Arbeitsspeicher des Webservers abgelegt werden, wodurch sich die Zahl der Datenbankanfragen verringert und die Interaktionen des Benutzers beschleunigt werden. Ein weiterer nützlicher Aspekt des DataSet besteht darin, dass es Anwendungen erlaubt, Teilmengen von Daten aus einer oder mehreren Datenquellen in einem Anwendungsraum zusammenzuführen. Die Anwendung kann dann die Daten im Arbeitsspeicher bearbeiten, während die relationale Form erhalten bleibt.

Trotz seiner häufigen Verwendung sind die Abfragefunktionen des DataSet begrenzt. Zum Filtern und Sortieren kann die Select-Methode verwendet werden, und die Methoden GetChildRows und GetParentRow ermöglichen die Navigation in der Hierarchie. Für komplexere Dinge muss der Entwickler jedoch eine benutzerdefinierte Abfrage schreiben. Das Ergebnis sind häufig Anwendungen, deren Leistung zu wünschen übrig lässt und die sich schwer warten lassen.

Mit LINQ to DataSet können Daten, die in einem DataSet-Objekt zwischengespeichert sind, leichter und schneller abgefragt werden. Die entsprechenden Abfragen werden nicht als in den Anwendungscode eingebettete Zeichenfolgenliterale, sondern in der Programmiersprache selbst ausgedrückt. Dies bedeutet, dass Entwickler keine separate Abfragesprache erlernen müssen. LINQ to DataSet versetzt Visual Studio-Entwickler darüber hinaus in die Lage, produktiver zu arbeiten, da die Visual Studio-IDE Features wie die Syntaxprüfung beim Kompilieren, statische Typisierung und IntelliSense-Unterstützung für LINQ bereitstellt. LINQ to DataSet kann auch zur Abfrage von Daten verwendet werden, die aus einer oder mehreren Datenbanken zusammengeführt (konsolidiert) wurden. Dadurch werden viele Szenarios möglich, in denen ein gewisses Maß an Flexibilität für die Darstellung und Behandlung von Daten erforderlich ist. Diese Manipulationsmethode wird insbesondere bei der Erstellung von Berichterstellungs-, Analyse- und Business Intelligence-Anwendungen benötigt.

Abfragen von "DataSets" mit LINQ to DataSet

Bevor Sie anfangen können, mit LINQ to DataSet ein DataSet-Objekt abzufragen, müssen Sie das DataSet auffüllen. Es gibt verschiedene Möglichkeiten, wie Daten in ein DataSet geladen werden können. Die Verwendung der DataAdapter-Klasse oder von LINQ to SQL sind nur zwei davon. Nachdem die Daten in ein DataSet-Objekt geladen wurden, können Sie anfangen, es abzufragen. Das Formulieren von Abfragen mit LINQ to DataSet ähnelt der Verwendung von Sprachintegrierte Abfrage (Language-Integrated Query, LINQ) für die Abfrage anderer LINQ-fähiger Datenquellen. LINQ-Abfragen können für einzelne Tabellen in einem DataSet oder mithilfe der Standardabfrageoperatoren Join und GroupJoin für mehrere Tabellen ausgeführt werden.

Mit LINQ-Abfragen können sowohl typisierte als auch nicht typisierte DataSet-Objekte abgefragt werden. Wenn das DataSet-Schema zum Zeitpunkt der Anwendungskonzeptionierung bereits bekannt ist, wird empfohlen, mit einem typisierten DataSet zu arbeiten. In einem typisierten DataSet haben die Tabellen und Zeilen für jede Spalte typisierte Member, wodurch die Abfragen einfacher und lesbarer werden.

Zusätzlich zu den in System.Core.dll implementierten Standardabfrageoperatoren fügt LINQ to DataSet mehrere DataSet-spezifische Erweiterungen hinzu, die die Abfrage eines ganzen Satzes von DataRow-Objekten erleichtern. Diese DataSet-spezifischen Erweiterungen enthalten Operatoren für den Vergleich von Zeilenfolgen sowie Methoden, die den Zugriff auf die Spaltenwerte einer DataRow ermöglichen.

n-Ebenen-Anwendungen und LINQ to DataSet

n-Ebenen-Anwendungen sind datenorientierte Anwendungen, die in mehrere logische Ebenen (auch Schichten oder Tiers genannt) aufgeteilt sind. Eine typische n-Ebenen-Anwendung besteht aus einer Darstellungsebene, einer mittleren Ebene und einer Datenebene. Das Aufteilen von Anwendungskomponenten in separate Ebenen erhöht die Wartungsfreundlichkeit und Skalierbarkeit der Anwendung. Weitere Informationen zu n-Ebenen-Anwendungen finden Sie unter N-Tier-Datenanwendungen.

In n-Ebenen-Anwendungen wird das DataSet häufig in der mittleren Ebene verwendet, um Informationen für Webanwendungen zwischenzuspeichern. Die LINQ to DataSet-Abfragefunktionalität wird durch Erweiterungsmethoden implementiert und erweitert das vorhandene ADO.NET 2.0-DataSet.

Das folgende Diagramm stellt die Beziehung zwischen LINQ to DataSet und dem DataSet-Objekt dar und zeigt die Einordnung des Objekts in einer n-Ebenen-Anwendung:

LINQ to DataSet zwischen mittlerer Ebene und DataSet.

Siehe auch

Konzepte

Abfragen von 'DataSets' (LINQ to DataSet)

Weitere Ressourcen

Sprachintegrierte Abfrage (Language-Integrated Query, LINQ)

LINQ to SQL