Übersicht über LINQ to DataSet
DataSet ist eine der am meisten verwendeten Komponenten von ADO.NET. Es ist eines der Schlüsselelemente des getrennten Programmiermodells, auf dem ADO.NET basiert, und ermöglicht es Ihnen, 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. DataSet wird häufig als Zwischenspeicher auf mittlerer Ebene verwendet, um die Anzahl von Anforderungen zu verringern, die an eine Datenbank gesendet werden. 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 praktischer Aspekt von DataSet ist, dass Anwendungen damit Teilmengen von Daten aus einer oder mehreren Datenquellen im Anwendungsraum zusammenführen können. 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, einfacher 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. Darüber hinaus können Visual Studio-Entwickler*innen mit LINQ to DataSet produktiver arbeiten, da die Visual Studio-IDE Syntaxüberprüfung zur Kompilierzeit, statische Typisierung und IntelliSense-Unterstützung für LINQ bietet. LINQ to DataSet kann auch zum Abfragen von Daten verwendet werden, die aus einer oder mehreren Datenquellen 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 ein DataSet-Objekt mithilfe von LINQ to DataSet abfragen können, müssen Sie das DataSet-Objekt auffüllen. Es gibt verschiedene Möglichkeiten, wie Daten in ein DataSet-Objekt 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 damit beginnen, sie abzufragen. Die Formulierung von Abfragen mit LINQ to DataSet ähnelt der Verwendung von LINQ (Language-Integrated Query) für andere Datenquellen mit LINQ-Unterstützung. LINQ-Abfragen können für einzelne Tabellen in einem DataSet-Objekt oder für mehrere Tabellen mithilfe der Standardabfrageoperatoren Join und GroupJoin 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 einer Gruppe 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 Datenschicht. Die Aufteilung der Anwendungskomponenten in verschiedene Ebenen erhöht die Verwaltbarkeit und die Skalierbarkeit der Anwendung. Weitere Informationen zu Datasets in n-schichtigen Datenanwendungen finden Sie unter Arbeiten mit Datasets in N-Tier-Anwendungen.
In n-Ebenen-Anwendungen wird das DataSet häufig in der mittleren Ebene verwendet, um Informationen für Webanwendungen zwischenzuspeichern. Die LINQ to DataSet-Abfragefunktion wird durch Erweiterungsmethoden implementiert und erweitert das vorhandene DataSet-Objekt von ADO.NET 2.0.