Entity Framework 7 – Code-basierte Modellierung
Kommentare

In der kommenden Version 7 des Entity Frameworks möchte das EF-Team viele Probleme des OR-Mappers aus der Vergangenheit adressieren und diesen entgegenwirken. Aus diesem Grund hat sich das Team dazu entschlossen, den OR-Mapper von Grund auf neu zu gestalten. Dabei sollen alle Erfahrungen der Vergangenheit einfließen, der Mapper soll leichtgewichtiger werden und einfacher zu bedienen sein.

Mit der neuen Leichtgewichtigkeit möchte Microsoft außerdem die Türen für neue Datenspeicher und Plattformen öffnen, darunter z. B. Windows Phone und NOSQL-Datenbanken.  Die Kosten für diesen neuen Mapper sind eine Neuimplementierung des Frameworks, Inkompatibilitäten zu älteren Versionen und (noch) viele offene Fragen auf Seiten Microsofts und der Community.

Entity Framework: Probleme der Vergangenheit

Vor Version 4.1 des Entity Frameworks standen zwei Workflows zur Verfügung: Database-First und Model-First. Bei Database-First wurde zuerst eine Datenbank modelliert, die dann über Reverse Engineering in ein EDMX-Modell überführt wurde. Bei Model-First wurde zuerst ein Model mit dem Designer in Visual Studio erzeugt, aus dem dann die Datenbank erzeugt wurde. In beiden Varianten wurde das Model in einem XML-basierten Format (EDMX) gespeichert. Mit EF 4.1 führte Microsoft dann die Spielart Code-First ein. Damit war es möglich, zuerst ein Model im Code auf Basis von CLR-Klassen zu definieren, aus dem dann die Datenbank generiert wurde. Mit den daraufhin entstandenen Werkzeugen konnte aus einer existierenden Datenbank ein Code-First-Model mittels Reverse Engineering zurückgeführt werden.

Ab diesem Zeitpunkt wurde der Name „Code-First“ verwirrend. Der Code wird nämlich nicht mehr zuerst geschrieben, sondern steht vielmehr im Mittelpunkt. Zudem tat sich eine parallele Verwaltung von Modellen auf: Auf der einen Seite gibt es die XML-basierten Modelle im EDMX-Format, auf der anderen Seite gibt es nun die Code-basierten Modelle. Dieser Umstand verschärft die Verwirrung nur noch etwas mehr. Und genau aus diesem Grund hat sich das EF-Team dazu entschlossen, sich auf eine Art der Modelverwaltung zu einigen, die sie zu aktuellen Zeitpunkt „Code-based modeling“ nennen, zu Deutsch: Code-basierte Modellierung.

Vorteile der Code-basierten Modellierung

In seinem Blog-Beitrag führt das EF-Team verschiedene Vorteile der Code-basierten Modellierung auf. Hier eine kurze Liste der genannten Vorteile:

  • Zusammenführen von Code-Ständen, Auflösung von Code-Konflikten und Code-Reviews sind einfacher zu handhaben.
  • Entwickler sind vertrauter mit Code und können damit einfacher und intuitiver umgehen.
  • Dynamische Anpassungen der Modelle zur Laufzeit (auf Basis der Umgebung) sind einfacher im Code zu bewerkstelligen.
  • Weniger Redundanz bei Code-basierter Modellierung, EDMX-Modelle entfallen, das Model ist ausschließlich im Code definiert.
  • Fehler/Exceptions sind einfach im Code selbst zu erzeugen als in Code, der komplexe XML-Modelle analysiert.
  • Migrations wurden zuerst mit der Code-First-Spielart eingeführt und standen nie für EDMX-Modelle zur Verfügung.

EF7: Die Zukunft

Mit dem neuen Entity Framework 7 wird Microsoft ausschließlich die Code-basierte Modellierung unterstützen. Dabei wird es Werkzeuge für den kompletten Roundtrip geben: Modelle können per Code definiert werden, woraus dann eine Datenbank generiert wird. Ebenfalls wird es Tools zum Erzeugen des Models im Code auf Basis einer existierenden Datenbank geben. Das EF-Team möchte darüber hinaus Probleme mit den Migrations adressieren, die aus dem Feedback der Community hervorgegangen sind.

Auch die Visualisierung von Modellen erachtet Microsoft als sehr wichtig, auch dieser Anforderung möchte man gerecht werden. Das Team ist sich zwar noch nicht ganz im Klaren darüber, wie es diese Anforderung umsetzen möchte, hat sie aber dennoch stark im Fokus. Eine Idee des Teams ist es, Roslyn (aka .NET Compiler Platform) zur Umsetzung eines Lese-/Schreib-Designers über den Code-Modellen einzusetzen.

Auch das erneute Zurückführen von Modellen aus existierenden Datenbanken und die damit einhergehenden Probleme bzgl. des Überschreibens von angepasstem Code werden von Microsoft adressiert. Hierfür soll es ebenfalls Lösungen geben. Bzgl. der Umsetzung gibt es allerdings auch in dieser Hinsicht von Seiten des Entwicklerteams noch viele offene Fragen.

Fazit

Microsoft ist bemüht, seinen OR-Mapper zum Erfolg zu führen und hört hierfür auf die Stimmen der Community. Dabei ist der Softwarekonzern sich aber bewusst, dass dies nicht ohne Verluste zu bewerkstelligen ist. Inkompatibilitäten zu älteren Versionen und damit einhergehende erhöhte Aufwände für die Benutzer des Frameworks thematisiert Microsoft schon heute in seinen Vorankündigungen, und fragt die Community nach ihrer Meinung. Es bleibt abzuwarten, wie Microsoft die verschiedenen Probleme und Stimmen adressiert und darauf in den Releases des Frameworks reagiert. Durch die Leichtigkeit der neuen Architektur und die Öffnung für neue Datenspeicher und Plattformen kann aber eine Menge erwartet werden.

Aufmacherbild: Last piece of jigsaw puzzle von Shutterstock / Urheberrecht: scyther5

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -