Manfred Steyer Freiberufler

„Mit Entity Framework Core 1.0 entsteht eine Datenzugriffsbibliothek, die sowohl unter Windows und Linux als auch unter Mac OS X läuft und auch vor Universal-Windows-Apps nicht Halt macht.“

Mit Entity Framework (EF) Core 1.0 schreibt Microsoft sein populäres Datenzugriffsframework neu. Das primäre Ziel ist eine Unterstützung für das plattformunabhängige .NET Core. Daneben will das Produktteam Mehrgleisigkeiten beseitigen und NoSQL-Lösungen berücksichtigen. Da in Version EF Core 1.0 noch einige Aspekte fehlen, empfiehlt sich für Anwendungen jenseits .NET Core vorerst noch die aktuelle Version Entity Framework 6.

Bei Entity Framework handelt es sich um die von Microsoft für .NET empfohlene Datenzugriffstechnologie. Seit seinem Erscheinen im Jahr 2008 hat das Produktteam den populären OR Mapper kontinuierlich weiterentwickelt. Somit liegt aktuell mit Version 6 eine ausgereifte und performante Lösung vor. Sie ist gut ins Ökosystem von .NET integriert und ermöglicht das Abfragen von Daten via LINQ.

Allerdings haben sich in Entity Framework im Laufe der Zeit auch einige Mehrgleisigkeiten angesammelt. Beispielsweise existieren derzeit zwei Ansätze zum Abbilden von Entitäten auf Tabellen. Neben der Möglichkeit, diese Informationen in einer XML-Datei zu verstauen, kann das Entwicklungsteam hierzu seit Version 4.1 auch auf eine Konfiguration mittels Quellcode zurückgreifen. Daneben liegen derzeit auch zwei Programmiermodelle vor: Neben dem ursprünglichen ObjectContext existiert auch der neuere DbContext. Letzteren bindet Visual Studio ab Version 2012 standardmäßig ein. Er ist aus Sicht der Anwendung leichtgewichtiger, auch wenn er intern auf den ObjectContext fußt.

Dazu kommen weitere Herausforderungen: Zum einen funktioniert Entity Framework 6 nicht mit dem neuen .NET Core, das auch unter Linux und Mac OS X läuft. Zum anderen adressiert das aktuelle Entity Framework lediglich relationale Datenbanksysteme. Auch wenn es sich dabei um das vorherrschende Datenbankparadigma handelt, kommen immer mehr Use Cases für alternative Ansätze auf. Unter dem Sammelbegriff NoSQL zusammengefasst, erleichtern diese Lösungen zum Beispiel auch den Umgang mit semistrukturierten Massendaten.

Ziele und Nichtziele für das neue Entity Framework

Um die eingangs erwähnten Herausforderungen zu adressieren, schreibt das Produktteam Entity Framework neu. Dies ist in erster Linie für die Unterstützung von .NET Core notwendig. Somit entsteht mit EF Core 1.0 eine Datenzugriffsbibliothek, die sowohl unter Windows und Linux als auch unter Mac OS X läuft und auch vor Universal-Windows-Apps nicht Halt macht.

Im Zuge dessen beseitigt das Produktteam auch die entstandenen Mehrgleisigkeiten: Der alte ObjectContext wird komplett entfernt, und das Mapping via XML-Dateien gehört ebenfalls der Vergangenheit an. Übrig bleiben der leichtgewichtige DbContext und die Konfiguration via Code. Auch wenn Letzteres in der Vergangenheit Code First genannt wurde, verhindert es nicht den Start mit einer bestehenden Datenbank. Dieses wohl am häufigsten vorkommende Szenario unterstützt EF Core 1.0, wie sein Vorgänger auch, mit einem Reverse-Engineering-Werkezeug. Dieses liest Metadaten aus der Datenbank aus und generiert Entitätsklassen sowie ein DbContext-Derivat.

Auch wenn EF Core 1.0 ein vollständiger Neubeginn ist, möchte das Produktteam das API, soweit es sinnvoll möglich ist, nicht verändern. Entwickler, die Entity Framework in der Vergangenheit nutzten, sollen sich auch bei EF Core 1.0 heimisch fühlen.

Daneben betont das Produktteam, dass das neue Entity Framework die Unterschiede zwischen relationalen Datenbanken und NoSQL-Lösungen nicht „wegabstrahieren“ kann. Bestimmte Möglichkeiten existieren eben nur im relationalen Paradigma oder in bestimmten NoSQL-Lösungen, und daran kann auch eine moderne Datenzugriffsbibliothek nichts ändern.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Windows Developer 6.16 - "Entity Framework – die neue Generation"

Alle Infos zum Heft
243066Ein Neustart mit dem Entity Framework Core 1.0
X
- Gib Deinen Standort ein -
- or -