LINQ-to-Entities (L2E)

Eintrag zuletzt aktualisiert am: 15.02.2011

 Fachbücher zum Thema LINQ-to-Entities (L2E)

LINQ-to-Entities ist die LINQ-Variante für den Zugriff auf Modelle, die mit den ADO.NET Entity Framework Objectservices erstellt wurden. LINQ-to-Entities ist sehr ähnlich zu der LINQ-Syntax in LINQ-to-SQL.

LINQ-to-Entities wandelt LINQ-Befehle in datenbankspezifische SQL-Syntax (z.B. T-SQL für Microsoft SQL Server oder PL/SQL für Oracle) um.

Es gilt aber: LINQ-to-Entities ist nur die Abfragesprache im engeren Sinne, während LINQ-to-SQL als Begriff sowohl die Abfragesprache als auch das ORM-Werkzeug bezeichnet.

Beispiel 1 für LINQ-to-Entities

Das folgende Beispiel zeigt eine LINQ to Entities-Abfrage aller Flüge von einem Abflugort, die mindes-tens einen Passagier haben und auf denen mindestens ein Passagier mit einem bestimmten Nachnamen gebucht ist. Für diese Abfrage werden also schon die Beziehungen zwischen den Entitäten ausgenutzt. Das Entity Framework erzeugt automatisch einen SQL-Befehl mit den notwendigen Joins über die vier Tabellen Flug, Flug_Passagier, Passagier und Person.

String ort = "Rom";
string name = "Müller";

from f in modell.Flug
where f.Abflugort == ort && f.Passagier.Count > 0 &&
f.Passagier.Any(p => p.Person.Name == name)
select f;

Beispiel 2 für LINQ-to-Entities

Besonders eindrucksvoll wird die Prägnanz von LINQ to Entities gegenüber SQL beim Einsatz von Pa-ging. Paging bedeutet, dass aus einer Ergebnismenge nur ein bestimmter Teilbereich geliefert werden soll, z. B. Datensätze 20 bis 29. Dies realisiert man in LINQ to Entities wie in LINQ to Objects mit den Metho-den Skip() und Take() (bzw. den Sprachelementen Skip und Take in Visual Basic .NET). Verglichen mit dem umfangreichen SQL-Code, den man normalerweise dafür schreiben muss, ist LINQ to Entities hier eine Revolution!

string ort1 = "Frankfurt";
string ort2 = "München";
string ort3 = "Berlin";
int von = 20;
int anzahl = 10;

var fluege = (from f in modell.Flug
where f.Abflugort == ort1 || f.Abflugort == ort2 || f.Abflugort == ort3
orderby f.FlugNr
select f).Skip(von).Take(anzahl);

Als E-Mail versenden
Bookmarken bei del.icio.us
Bookmarken bei Digg
Reddit
Bookmarken bei Live