Entity Framework Core (EFC)

Eintrag zuletzt aktualisiert am: 17.08.2022
 siehe auch www.efcore.net

Neuimplementierung des Objekt-Relationalen Mappers "ADO.NET Entity Framework"

Versionen



Namen

Entity Framework Core hieß bei der ersten öffentlichen Erwähnung am 13.5.2014 noch "Entity Framework 7.0" als Nachfolger des "ADO.NET Entity Framework 6.2".

Microsoft hat den Namen aber vor dem Erscheinen der ersten Version im Januar 2016 auf Entity Framework Core 1.0 geändert; im Zuge der Umbenennung von .NET Core 5.0 und .NET Core 1.0 und ASP.NET Core 5.0 in ASP.NET Core 1.1 [http://www.hanselman.com/blog/aspnet-5-is-dead-introducing-aspnet-core-10-and-net-core-10].

Seit dem Jahr 2022 Microsoft spricht in den Blogeinträgen für die kommende Version teilweise noch von "Entity Framework 7.0", abgekürzt EF7. Damit wird es schwieriger, die moderne Produktlinie von dem klassischen Entity Framework (derzeit Version 6.4) abzugrenzen sowie dem bereits zwischen 2014 und 2016 verwendeten Namen "Entity Framework 7.0" für die erste Version des modernen Entity Framework.

https://devblogs.microsoft.com/dotnet/announcing-ef7-preview5
https://devblogs.microsoft.com/dotnet/announcing-ef7-preview6
https://devblogs.microsoft.com/dotnet/announcing-ef7-preview7

Plattformen

Das neue Entity Framework Core (EF Core) lief ursprünglich auf allen .NET-Varianten (.NET Framework, .NET Core, Mono und Xamarin).

Entity Framework Core läuft aber seit Version 5.0 nur noch auf der jeweils aktuellsten modernen .NET-Version, also z.B. Entity Framework Core 6.0 auf .NET 6.0. Entwickler, die Entity Framework Core auf dem klassisches .NET Framework genutzt haben, stecken in einer Sackgasse. Sie können nur höchstens die Version 3.1 verwenden, deren Support Ende 2021 endet.

Unterstützte Datenbanken

Genau wie für das klassisches Entity Framework ist auch für Entity Framework Core ein spezieller Datenbanktreiber notwendig, der über die Fähigkeiten eines normalen ADO.NET-Treibers hinausgeht. Sofern nicht beschränkt durch das Betriebssystem, unterstützt Entity Framework Core den Zugriff auf eine Vielzahl von Datenbankmanagementsystemen. Microsoft selbst liefert Entity Framework Core-Treiber für Microsoft SQL Server, SQLite, und ComosDB sowie einen In-Memory-Treiber für Unit Testing. Von den jeweiligen Datenbankherstellern, kommerziellen Drittanbietern oder aus der Community kommen Treiber für Oracle, MariaDB, PostgreSQL, MySQL, Firebird, DB2, Informix u.a. (siehe Liste unter [https://docs.microsoft.com/de-de/ef/core/providers/]). Sogar einen Treiber für Microsoft Access gibt es, der aber bei Entity Framework Core 3.1 verharrt ist. Entity Framework Core ist auch nicht auf relationale Datenbanken beschränkt, sondern kann auch NoSQL-Datenbanken ansprechen. Die Entwicklung eines Treibers für MongoDB ist in den Kinderschuhen stecken geblieben.

siehe https://docs.microsoft.com/de-de/ef/core/providers/

Ziele

  • Leichtgewichtiger: schneller & weniger RAM-Bedarf
  • Kein Ziel: Kompatibilität zu EF 6.x
  • Kein Upgradetool von EF 6.x zu EF Core!

Neue Features in EF Core gegenüber dem klassischen ADO.NET Entity Framework

X-Platform: Windows, Linux, Mac, iOS, Android
SQLite-Provider von Microsoft
In-Memory-Provider
NoSql-Unterstützung
Mapping auf Memory-Tables
Default Values / Computed Values
Sequences
Shadow State (Mapping von zusätzlichen Spalten)
Indexer Properties (Mapping von zusätzlichen Spalten und Tabellen)
CUD-Batching
Default Query Tracking Behaviour
Global Query Filter
Value Converter
Filtered Includes
Auto-Includes
Savepoints und Transaction-Ids

Verbesserte Funktionen in EF Core gegenüber dem klassischen ADO.NET Entity Framework

Deutlich bessere Performance
Schemamigrationen im Team
Mischung SQL/SP/TVF und LINQ
Syntax für Fluent-API
Migration zur Laufzeit
Skip() ohne OrderBy()
Generiertes SQL ist einfacher und übersichtlicher
Projektionen auf Entitätsklasse
ThenInclude()
Weniger Aufrufe von DetectChanges()

Entfallene Features gegenüber dem Klassischen Entity Framework

DB First mit EDMX
Model First mit EDMX
ObjectContext
Entity Object
Entity SQL