| 

.NET C# Java Javascript Exception

0

Für die objektorientierte Programmierung ist der Zugriff auf Datenbanken eine Herausforderung, da die traditionellen Datenzugriffs-APIs die Daten nicht als Objekte zur Verfügung stellen. Mit der Version 3.5 des .NET Framework hat Microsoft unter dem Namen LINQ eine "sprachintegrierte" Abfrage (Language-INtegrated Query) zur Verfügung gestellt.

Bei dem bisher üblichen Verfahren für eine Datenbankabfrage in ADO.NET wird typischerweise an eine Datenbank, zu der eine Verbindung aufgebaut ist, eine in SQL formulierte Abfrage übergeben, die von der Datenbank ausgeführt wird, um die angeforderten Daten an die fragende Anwendung auszuliefern. LINQ erlaubt es stattdessen durch entsprechende Spracherweiterungen, eine solche Abfrage direkt in Visual Basic (VB) oder C# zu formulieren. Dabei wird eine Syntax verwendet, die sich zwar an SQL anlehnt, aber für den Zugriff auf ganz unterschiedliche Datenquellen verwendbar ist. Bei einer SQL-Abfrage wird ein entsprechender String wie ein schwerverdaulicher Brocken in eine VB- oder C#-Anwendung gesteckt. Ein Debugging dieser Statements selbst ist nicht möglich. Der Compiler kann auch keine Fehlerprüfung zu den Elementen dieses Statements machen. Ein falscher Buchstabe in einem Feldnamen wird leicht übersehen, ist unter Umstanden aber schwer als Fehlerquelle auszumachen. Dagegen ist eine LINQ-Abfrage ein gleichrangiges Element in einer solchen Anwendung, für das auch alle Bequemlichkeiten der Visual Studio-Entwicklungsumgebung wie IntelliSense-Unterstützung und Debugging zur Verfügung stehen. Eine typische Form einer solchen Abfrage kann in VB .NET beispielsweise wie folgt aussehen:

Private kd As New kundenDataContext
Dim kundenByRegion = From k In kd.kunden _
 Order By k.Region _
 Group By RegionName = k.Region _
 Into RegionaleKunden = Group, Count() _
 Order By RegionName
For Each region In kundenByRegion
 Console.WriteLine(region.RegionName & _
 " (" & region.Count & ")" & vbCrLf)
Next

LINQ ist dafür ausgelegt, den Zugriff auf Daten zu vereinheitlichen und erleichert so auch das Mischen von Daten aus verschiedenen Datenquellen, indem die Barrieren zwischen Objekten und relationalen Daten, zwischen Objekten und XML-Daten und zwischen XML und relationalen Daten wenigstens reduziert werden. Ein gravierender Vorteil liegt zudem darin, dass stets auch die Abfrageergebnisse als streng typisierte Objekte zur Verfügung stehen. Damit eine solche sprachintegrierte Abfrage funktioniert, kommen spezielle LINQ-Anbieter (Provider) zum Einsatz, die eine in VB oder C# formulierte Abfrage automatisch in die Befehle übersetzen, die die angesprochene Datenquelle versteht. Bisher stehen dafür folgende Varianten zur Verfügung:

  • LINQ to SQL stellt eine Laufzeitinfrastruktur zur Verfügung, die es erlaubt, relationale Daten als Objekte zu handhaben.
  • LINQ to DataSet vereinfacht die Abfrage von Daten, die in DataSet-Objekten zur Verfügung stehen.
  • LINQ to XML stellt den Entwicklern XML-Dokumente ähnlich wie das DOM-Modell im Speicher zur Abfrage zur Verfügung, wobei nicht mit XPATH gearbeitet wird, sondern mit funktional ähnlichen Spracherweiterungen in C# oder Visual Basic.
  • LINQ to Entities erlaubt die Abfrage von Daten, die mithilfe des ADO.NET Entity Frameworks bereitgestellt werden.
  • LINQ to Objects erlaubt die Abfrage von speicherinternen Datenkollektionen und Arrays.
datenbanken
Schreibe einen Kommentar:
Themen:
datenbanken
Entweder einloggen... ...oder ohne Wartezeit registrieren
Benutzername
Passwort
Passwort wiederholen
E-Mail