Entity Framework Core 6.0

Eintrag zuletzt aktualisiert am: 29.03.2021


Entity Framework Core 6.0 soll im November 2021 zusammen mit .NET 6 erschienen.

Neue Features
Der OR-Mapper bietet seit .NET Preview 1 neue Annotationen wie [Unicode], [Precision] und [EntityTypeConfiguration]. Der Datenbanktreiber für SQLite unterstützt nun ToString() und das in Version 5.0 eingeführte Savepoints API. Für den Microsoft SQL Server kann man nun per Fluent-API eine Spalte als "Sparse Column" deklarieren und damit Speicherplatz in den Datenbankdateien einsparen für den Fall, dass viele Null-Werte vorkommen, was beim Table-per-Hierarchy-Mapping häufig auftritt, da hier eine ganze Vererbungshiearchie in einer Tabelle lebt. Auch die Methode IsNullOrWhitespace() unterstützt der SQL Server-Treiber nun. Für SQL Server, SQLite und Cosmos DB funktioniert die Zufallszahlengenerierung mit EF.Functions.Random(). Beim Reverse Engineering übernimmt der Befehl Scaffold-DbContext jetzt Kommentare zu Tabellen und Spalten aus dem Datenmodell in den generierten Programmcode.

Preview 2 bietet hingegen nur kleine Verbesserungen: String.Concat() funktioniert auch mit mehr als zwei Parametern. SqlServerDbFunctionsExtensions.FreeText() und SqlServerDbFunctionsExtensions.Contains() funktionieren jetzt auch mit binären Spalten und in Zusammenarbeit mit Value Convertern. Außerdem hat Microsoft ein schon länger bestehendes lästiges Problem [https://github.com/dotnet/efcore/issues/18124] mit doppelten Typen in zwei verschiedenen Assemblies in Zusammenhang mit asynchronen LINQ-Operationen endlich gelöst [https://github.com/dotnet/efcore/issues/24041].

Weitere Pläne für Entity Framework Core 6.0 hat Microsoft am 18.1.2021 veröffentlicht [https://devblogs.microsoft.com/dotnet/the-plan-for-entity-framework-core-6-0/].

Dazu gehören:
 N:M-Unterstützung beim Reverse Engineering
 Mapping für Spalten mit Typ "JSON"
 Unterstützung für temporale Tabellen im Microsoft SQL Server
 Festlegung der Reihenfolge beim Anlegen von Spalten (ColumnAttribute.Order)
 Migration Bundles für Schemamigrationen (war schon für Version 5.0 geplant: Alternativ zu einem SQL-Skript soll eine ausführbare Datei generiert werden, die das Datenbankschema aktualisiert)
 Leistungsverbesserungen insbes. Schnellerer Start durch kompilierte Modelle
 Unterstützung für ADO.NET Batching API [https://github.com/dotnet/runtime/issues/28633]
Bei der Performance hat sich Microsoft vorgenommen, im TechEmpower Benchmark [https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=db] den konkurrienden Micro-ORM "Dapper" von StackExchange [https://github.com/StackExchange/Dapper] zu schlagen