Simpler Ersatz für SQL: So funktioniert LINQ

(http://www.zdnet.de/magazin/39193069/simpler-ersatz-fuer-sql-so-funktioniert-linq.htm)

von Toni Patton, 29. Juli 2008

Die Begeisterung für die .NET-Komponente LINQ lässt sich kaum noch ignorieren. Das gilt vor allem, seit es Microsoft in der .NET-Plattform und in Visual Studio 2008 integriert hat. ZDNet zeigt die besten Eigenschaften dieser Datenbank-Technologie.

LINQ[1] (Language-Integrated-Query) ermöglicht den Zugriff auf Daten mithilfe einer beliebigen Programmiersprache, ohne dabei auf SQL zurückgreifen zu müssen. Im Rahmen der .NET-Plattform ist LINQ[2] ein Erweiterungspaket des .NET-Framework. Es ermöglicht das Abfragen von .NET-Objektmengen, relationalen Datenbanken, Data-Sets und XML-Daten. LINQ ist seit dem .NET-Framework 3.5 in der Sprachsyntax von C# 3.0 und Visual Basic 9.0 verankert.

Der zentrale Begriff, der in der Bezeichnung LINQ steckt, lautet Integration. Dieser Terminus weist darauf hin, dass Entwickler via LINQ in der Lage sind, in ihrer eigenen Programmiersprache mit verschiedensten Datenquellen zu kommunizieren. Diese Integration macht eine detaillierte Kenntnis von SQL entbehrlich. Der Entwickler kann also bei der Arbeit mit Back-End-Daten weiterhin seine bevorzugte Programmiersprache verwenden.

LINQ funktioniert mit jeder Back-End-Datenquelle. Entwickler können so von den zahlreichen Funktionen ihrer IDE, etwa Visual Studio 2008[3], profitieren. Während der Übersetzung führt der Compiler eine Überprüfung der Syntax und eine statische Typisierung durch. Diese Funktionen stehen bei der Arbeit mit externen Tools wie SQL Server Enterprise Manager leider nicht zur Verfügung.

Microsoft unterteilt LINQ in drei Bereiche:

Diese drei Funktionsbereiche von LINQ werden über zahlreiche .NET-Klassenbibliotheken bereitgestellt.

LINQ stellt seine Funktionen über eigene Klassen bereit. Der wichtigste LINQ-Namensraum ist System.Linq. Er verfügt über Klassen und Schnittstellen, die LINQ-Anfragen unterstützen. Außerdem gibt es noch folgende Namensräume:

Eine der wichtigsten Eigenschaften von LINQ besteht darin, dass eine komplette Abfrage jeder Sammlung möglich ist, die IEnumerable oder IQueryable implementiert. Damit LINQ auch Objekte im Arbeitsspeicher berücksichtigt, sollte der Objekttyp IEnumerable implementieren. Für LINQ to XML und LINQ to ADO.NET gilt, dass der zugrunde liegende Anbieter die Zielobjekte zu Sammlungen auf der Grundlage von IEnumerable konvertiert. Da LINQ mit sämtlichen Sammlungen zusammenarbeitet, die die Schnittstelle IEnumerable implementieren, ist die Einstiegsschwelle sehr niedrig. Denn fast alle Container des Typs .NET unterstützen IEnumerable. Das folgende C#-Beispiel zeigt die Verwendung von LINQ mit einem Array an Stringwerten. Es wird ein IEnumerable-String verwendet, um sämtliche Wortwerte im Stringarray zu durchlaufen.

Das Arbeiten mit Stringdaten ist zwar gut, aber die Interaktion mit SQL Server wird sicherlich häufiger vorkommen. Visual Studio 2008 beinhaltet ein Entwickler-Tool, mit dem sich eine Datenbank einfach als LINQ-to-SQL-Datenmodell formen und sichtbar machen lässt. Die Elemente der Datenbank können per Drag and drop in die Entwicklungsumgebung eingefügt werden. Daraus resultiert eine dbml-Datei. Diese Datei erstellt dann die Klassendatei für Bearbeitungsvorgänge wie Erstellen (Create), Lesen (Read), Aktualisieren (Update) und Löschen (Delete).

Sobald mehrere Datenbank-Features in das Designer-Tool kopiert sind, bekommt die dbml-Datei einen Namen zugewiesen. Dieser Name wird für die Kommunikation mit der zugrunde liegenden Datenquelle verwendet. Als Beispiel dient hier eine Verbindung zum Mitarbeiterverzeichnis der Beispieldatenbank Northwind von SQL Server. Der folgende C#-Code greift auf die Datenquelle zu:

Es folgt der entsprechende Code in Visual Basic:

Mit LINQPad lernen

Manche Menschen neigen bei neuen Technologien dazu, sich sofort kopfüber hineinzustürzen und loszulegen. Mit LINQ fällt das auch wirklich leicht: einfach Visual Studio 2008 starten und ein neues Projekt erstellen, das sich unter LINQ mit einer Datenquelle verbindet. Das Gratis-Tool LINQPad bietet eine leicht zu bedienende Schnittstelle für das Arbeiten mit LINQ-Funktionen.

LINQPad[4] steht als kostenloser Download zur Verfügung. Man braucht nur die ausführbare Datei herunterladen, und schon ist es einsatzfähig. Das Tool enthält zahlreiche Code-Beispiele. Es gibt dem Benutzer die Möglichkeit, problemlos mit LINQ zu arbeiten, Verbindungen zu erstellen und mit der Datenquelle zu kommunizieren. Die Daten lassen sich problemlos per Drag and drop in ein Quellfenster einfügen, oder man gibt direkt Code ein.

LINQ erleichtert die Entwicklungsarbeit

Microsoft verspricht immer wieder, einige Prozesse in den Entwicklungsplattformen und Tools effektiver zu gestalten und so die Anwendungsentwickler zu entlasten. Mit LINQ ist der Datenzugriff tatsächlich einfacher. Entwickler haben nun die Möglichkeit, unter Verwendung ihrer bevorzugten Programmiersprache mit Back-End-Datenquellen zu interagieren, und sind somit nicht mehr auf SQL angewiesen.

Wer hat bereits Erfahrungen mit LINQ im .NET Framework gemacht? Ist es von Vorteil, dass Entwickler nun nicht mehr auf das Erlernen und den Gebrauch von SQL angewiesen sind? Teilen Sie Ihre Gedanken und Erfahrungen im Forum[5] mit!

URLs in diesem Artikel:
[1] = http://www.zdnet.de/builder/architect/0,39023548,39138820,00.htm
[2] = http://msdn2.microsoft.com/en-us/library/bb308959.aspx
[3] = http://www.zdnet.de/builder/program/0,39023551,39185938,00.htm
[4] = http://www.linqpad.net/
[5] = http://cgi.zdnet.de/forum/viewforum.php?f=1&c=2