11.07.2015 Aufrufe

2 Grundlagen Persistenzframeworks

2 Grundlagen Persistenzframeworks

2 Grundlagen Persistenzframeworks

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Kapitel 3: LINQverwiesene Objekte typisiert und transparent erreichbar macht. So steht beispielsweisein der Klasse Automobil neben Nullable Halter auch die entsprechendePerson zur Verfügung. Annotiert wird das Zusatzattribut als Association unterAngabe, dass es Teil einer Fremdschlüssel-Relation ist, IsForeignKey=true, und derdaran beteiligten, hiesigen ThisKey="Halter" und verwiesenen SpaltenOtherKey="PersonID". Ferner stattet der Codegenerator die set-Methode desAssoziations-Attributs mit Operationen zur Aktualisierung aller an der Relationbeteiligten Objekte und Fremdschlüssel-Attributen aus. Auch in der Gegenrichtung wirddie verwiesene Klasse, im Beispiel Person, um eine typisierte KollektionEntitySet mit Association annotiert. Dies verdeutlicht, dass demEntwickler transparente Navigationsmöglichkeiten über beide Richtungen einerFremdschlüsselrelation geschaffen werden.Nachdem das objektrelationale Mapping vorgenommen ist, können Abfragen per LINQauf Grundlage der erstellten Klassen formuliert werden. Um in einer AnwendungZugriff auf die gemappten Datenelemente zu erhalten, ist die Instanziierung einesDataContext, in diesem Fall des FahrtenbuchDataContext, erforderlich, wasunter Angabe einer Verbindungszeichenfolge stattfindet, welche die dafür nötigenInformationen zur Datenquelle enthält. Zur Abfrage sämtlicher Automobile lässt mansich die Table vom Kontext-Objekt übergeben und führt folgendesLINQ-Statement damit aus:IQueryable qAutos = from auto in tAutos select auto;Die Resultat-Kollektion wird als IQueryable angegeben, was eine Erweiterung desIEnumerable darstellt und als Automobil typisiert wird, der gemappten Klasse. EineImplementierung von IQueryable kann dabei über die Methode zur Auswertung desAbfrageausdruckes entscheiden und kann Mengenoperationen wie Auswahl undFilterung damit direkt in der Datenquelle selbst stattfinden lassen. Auf diese Weise wirdim Falle von LINQ to SQL von den leistungsfähigen Abfragemechanismen einerSQL Server-Datenquelle Gebrauch gemacht. Der gezeigte Abfrageausdruck besteht auszwei Teilen: dem from/in-Abschnitt, der die Variable auto für die Elemente derSequenz tAutos vom Typ Table durchläuft, und dem selectAbschnitt, der die Rückgabe der Elemente auto bewirkt. Die LINQ-Syntax istkeinesfalls mit SQL zu verwechseln, obwohl sie bezüglich der verwendeten15

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!