LINQ to SQL- Genial einfach
02. September 2008LINQ (Abkürzung für Language INtegrated Query) ist eine .NET Komponente für (ORM) Object-Relational Mapping. ORM verwendet man zum Zugriff auf Datenbanken und anderen Datenquellen keine SQL Syntax, sondern arbeitet mit Programmierlogik. Das macht den Code sehr einfach und sprechend. In der Regel hat man eine Klasse mit der man nach Daten suchen kann und erhält Objekte zurück die, die Eigenschaften der Tabellen Spalten besitzen. ORM setzt sich in allen Programmiersprachen immer mehr durch und wenn man einmal damit gearbeitet hat, dann möchte man keine SQL Querys mehr schreiben.
In der PHP Welt ist das ORM Framework Propel sehr verbreitet. LINQ ist im Vergleich zu Propel wesentlich einfacher zu verwenden.
In Visual Studio fügt man seinem Projekt einfach eine LINQ to SQL-Klasse hinzu und zieht dann per Drag & Drop die Datenbank-Tabelle auf das Designer Feld. Ab diesen Moment stehen einem die ORM Klassen im Projekt zur Verfügung.

Mit der Toolbox kann man Relationen abbilden.

Über die Eigenschaften kann man für die Standardmethoden auch Stored Procedures verwenden.

Wenn eine Tabelle Books heißt, hat man jetzt eine Klasse BooksDataContext mit der man Abfragen machen kann und Objekte des Typs Books zurückbekommt. Diese haben die Properties, die den Tabellen Spalten entsprechen.
Man kann die Abfrage auf zwei Arten durchführen.
1. Query Abfrage:
Diese sieht genauso aus wie SQL, ist aber Programmierlogik und führt zu Kompilefehlern wenn etwas nicht stimmt:
Dim context As TaskListDataContext = New TaskListDataContext() Dim tasks As System.Linq.IOrderedQueryable(Of Tasks) = From task In context.Tasks Order By task.EntryDate Descending
2. Methoden Abfrage
Mittels einer Menge von Methoden kann man die Daten aus der Context Klasse holen.
Dim context As TaskListDataContext = New TaskListDataContext()
Dim tasks As System.Linq.IOrderedQueryable(Of Tasks) = context.Tasks.Select(Function(m) m)
Ein Insert ist genau so einfach:
Dim newTask As New Tasks()
newTask.Task = task
newTask.IsCompleted = False
newTask.EntryDate = DateTime.Now
db.Tasks.InsertOnSubmit(newTask)
db.SubmitChanges()
Ich war überrascht das die Verwendung von Linq so einfach ist. Im Gegensatz zu Propel benötigt man kaum Einarbeitung und keine aufwendige Installation und XML Konfiguration.
Man kann Linq auch mit allen möglichen anderen Providern verwenden: Third-Party LINQ Providers.
Insbesondere die Verwendung mit XML (Linq to XML) kann sicher eine Menge Arbeit und Nerven sparen.
Tags:.NET, linq, ORM
Veröffentlicht in .NET | Keine Kommentare »


