SQL Practice Blog – SQL Server, BizTalk und .NET Erfahrungen

Neue Features des Entity Frameworks 4.0

leave a comment »

Der Zeitpunkt rückt immer näher an dem Visual Studio 2010 und damit .NET 4.0 erscheinen wird. Inzwischen sind wir schon beim Release Candidate 1 des Visual Studios 2010, welcher frei zum Download bereit steht. Deshalb ist es an der Zeit eine Übersicht über die wichtigsten neuen Features des Entity Framework 4.0 zu geben.

Model First Design

Das Entity Framework 1.0 unterstützte nur Reverse Engineering. Das bedeutet man kann aus einer bestehenden Datenbank ein Entity Data Model erzeugen. Nun gibt es mit dem Entity Framework 4.0 auch die Möglichkeit des Forward Engineerings. Ich erzeuge mir zuerst mein Domain Model und kann dann zu einem beliebigen Zeitpunkt meine Datenbank erzeugen. Hierbei wird eine DDL Skript erzeugt, welches dann auf dem jeweiligen SQL Server (oder ein anderen Datenbankserver) ausgeführt werden muss. Ein was gibt es jedoch zu beachten: Das Entity Framework 4.0 unterstützt kein Round Trip Engineering. Dadurch wird die Datenbank bei jeder Änderung im Domain Model und der darauffolgenden DDL Skripterstellung komplett gelöscht und anschließend neu erstellt.

Foreign Keys

Mit dem Entity Framework 4.0 ist es möglich einen Datensatz weitere abhängige Datensätze anzuhängen ohne den Quelldatensatz laden zu müssen. Hierbei wird nur über den ForeignKey gearbeitet. Deshalb gibt es bei jeder im Entity Framework 4.0 erstellen Entität auch den Fremdschlüssel zu Referenztabellen. Zum Beispiel hat eine Tabelle OrderDetails eine Abhängigkeit zu der Tabelle Orders. Möchte ich der Tabelle OrderDetails einen Datensatz hinzufügen, so muss ich nicht den kompletten Datensatz aus der Orders Tabelle laden. Hier reicht es wenn ich bei dem OrderDetails Datensatz einfach die eindeutige ID für den Orders Datensatz mit angebe. Somit erspare ich mir unnötiges das unnötige Laden der Abhängigkeiten.

Lazy Loading

Wer mit dem Entity Framework 1.0 gearbeitet hat kennt das Problem sicherlich. Zum Nachladen von Daten musste man immer explizit die Load() Funktion aufrufen. Hier war LINQ to SQL dem Entity Framework um einiges voraus. LINQ to SQL lädt die Daten dynamisch bei Aufruf nach. Jedoch hat LINQ to SQL das Problem das sich dieses dynamische nachladen nicht deaktivieren lässt.
Das ändert sich jedoch mit der Entity Framework Version 4.0, hier kann der Entwickler ein dynamisches Nachladen explizit aktivieren und deaktivieren. Nun muss nicht mehr die Load() Funktion aufgerufen werden. Es reicht wenn man auf die jeweilige Entität zugreift um die Daten nachzuladen.

Self Tracking Entities für bessere N-Tier Unterstützung mit POCO Klassen

Durch die Unterstützung von Self Tracking Entities können nun mit dem Entity Framework 4.0 POCO Klassen erstellt werden. Dies geschieht über eine Codeerstellungsvorlage mit dem Text Template Transformation Toolkit (T4). Hier werden zwei Vorlagen erstellt, eine für die Entitätsklassen und eine für den Kontext. Dadurch ist es möglich den Kontext und die Entitätsklassen in separate Assemblies zu verlagern. Self Tracking Entities erlauben es im Gegensatz zu den Entitätsklassen im Entity Framework 1.0 auch im losgelösten Zustand (Detached) Änderungen an den Daten zu protokollieren. Somit kann man im Entity Framework 4.0 auf Data Transfer Objects (DTO) verzichten, da die Entitätsklassen in keiner Abhängigkeit mehr zu dem Entity Framework stehen.

Erweiterte Stored Procedure Unterstützung

Endlich kann man auch Stored Procedure mit einem Rückgabewert von Typ Void oder Skalar ohne Einschränkungen benutzen! Hinzugekommen ist ein neuer Rückgabewert, der Complex Type. Der Complex Type erlaubt es für einen Rückgabewert der nicht Skalar ist, aber auch auf keine Entitätsklasse passt, einen komplexen Datentyp anzulegen. Dieser komplexe Datentyp kann dann im Entity Framework genutzt werden und z.B. als Attribut in eine Entitätsklasse eingefügt werden. Mehr Infos dazu findet ihr in einem extra Blogeintrag.

Written by Robert Meyer

Februar 16, 2010 um 10:20

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: