Entity Framework Core (EFC)
Eintrag zuletzt aktualisiert am: 17.08.2022
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