- Bei den Zieldatenbanken können Sie wählen zwischen Microsoft SQL Server, SQL Azure, SQLite, MySQL, PostgreSQL, Oracle oder Cosmos DB (andere auf Anfrage)
- Plattformen für Entity Framework Core 5.0
Viele Verbesserungen im ORM-MapperAbstraktion von N:M-Beziehungen (keine explizite .NET-Klasse für Zwischentabellen mehr notwendig)Table-per-Type-Mapping (TPT) als Alternative zu Table-per-Hierarchy (TPH)Mapping der .NET-Datentypen System.Net.IPAddress und System.Net.NetworkInformation.PhysicalAddress auf ZeichenkettenspaltenErweiterung des Fluent-APIs, z.B. Genauigkeit für Dezimalzahlen mit HasPrecision() und Füllfaktor für SQL Server Indexe mit HasFillFactor(), persistente berechnete Spalten mit stored = true in HasComputedColumnSql() sowie UseCollation() als Einstellung für Sortierungen und Vergleiche. Neu ist auch, dass Tabellen mit ExcludeFromMigrations() aus den Schemamigrationen ausgeschlossen werden können. Neue Annotation [Keyless], [Index] und [BackingField] als Alternative zum Fluent-APIErweiterungen bei den Kommandozeilenbefehlen Eager Loading mit Filter (Filtered Include) Aufspalten der Abfragen beim Eager Loading mit .AsSplitQuery() und UseQuerySplittingBehavior()Weitere skalare Datenbankfunktionen Einfache Anzeige des zu einer LINQ-Abfrage gehörenden SQL-Befehls mit ToQueryString() und CreateDbCommand() sowie im Visual Studio Debugger per Debugger ViewVereinfachte Konfiguration der SQL-Protokollierung mit LogTo()Detaillierte Fehlermeldungen mit EnableDetailedErrors() Doppelte Objekte eliminieren bei No-Tracking-Queries mit PerformIdentityResolution() bzw. AsNoTrackingWithIdentityResolution()Mit ChangeTracker.Clear() kann der Entwickler den Zustand eines Kontextes zurücksetzen.Für die Beschaffung von Kontextinstanzen gibt es die neuen Methoden AddDbContextFactory() und AddPooledDbContextFactory().Bei Transaktionen werden nun Savepoints und Transaction-Ids unterstützt.Es ist erstmals möglich, dass der OR-Mapper bei einer einzigen Entitätsklasse für das Lesen der Daten eine Datenbanksicht (View), aber für das Schreiben eine Tabelle nutzt.Table-Valued-Functions lassen sich jetzt nicht nur mit FromSql() aufrufen, der Entwickler kann auch auf einfache Weise Wrapper-Methoden in der Kontextklasse bereitstellen.Microsoft hat Ereignisse ergänzt, die beim Speichern ausgelöst werden: SavingChanges(), SavedChanges() und SaveChangesFailed(). Einfluss auf den Speichervorgang kann der Entwickler in einem SaveChangesInterceptor nehmen. Softwareentwickler können mit Indexer Properties auf Basis von C#-Indexern bestehende Entitätstypen um Spalten erweitern und auch zur Laufzeit ganz neue dynamische Entitätstypen mit Datenbankabbildung erschaffen. Zur Diagnose kann der Betreiber einer Anwendung nun Event Counter des OR-Mappers mit dotnet counters monitor abrufen.