Vergleichen von EF Core und EF 6Compare EF Core & EF6

EF CoreEF Core

Entity Framework Core (EF Core) ist ein moderner Objekt-Datenbank-Mapper für .NET.Entity Framework Core (EF Core) is a modern object-database mapper for .NET. Er unterstützt LINQ-Abfragen, Änderungsnachverfolgung, Updates und Schemamigrationen.It supports LINQ queries, change tracking, updates, and schema migrations.

EF Core funktioniert mit SQL Server/SQL Azure, SQLite, Azure Cosmos DB, MySQL, PostgreSQL und vielen weiteren Datenbanken über ein Datenbankanbieter-Plug-In-Modell.EF Core works with SQL Server/SQL Azure, SQLite, Azure Cosmos DB, MySQL, PostgreSQL, and many more databases through a database provider plugin model.

EF6EF6

Entity Framework 6 (EF6) ist ein objektrelationaler Mapper, der für .NET Framework konzipiert ist, jedoch mit Unterstützung für .NET Core.Entity Framework 6 (EF6) is an object-relational mapper designed for .NET Framework but with support for .NET Core. EF6 ist ein stabiles, unterstütztes Produkt, das jedoch nicht mehr weiterentwickelt wird.EF6 is a stable, supported product, but is no longer being actively developed.

FunktionsvergleicheFeature comparison

EF Core bietet neue Features, die in EF6 nicht implementiert werden.EF Core offers new features that won't be implemented in EF6. Allerdings sind derzeit nicht alle EF6-Features in EF Core implementiert.However, not all EF6 features are currently implemented in EF Core.

In den folgenden Tabellen werden die in EF Core und EF6 verfügbaren Funktionen verglichen.The following tables compare the features available in EF Core and EF6. Das ist ein allgemeiner Vergleich, in dem nicht alle Funktionen aufgelistet und nicht alle Unterschiede zwischen der gleichen Funktion in verschiedenen EF-Versionen erläutert sind.This is a high-level comparison and doesn't list every feature or explain differences between the same feature in different EF versions.

Die Spalte „EF Core“ zeigt die Produktversion, in der die Funktion zum ersten Mal eingeführt wurde.The EF Core column indicates the product version in which the feature first appeared.

Erstellen eines ModellsCreating a model

FeatureFeature EF6.4EF6.4 EF CoreEF Core
Grundlegende KlassenzuordnungBasic class mapping JaYes 1.01.0
Konstruktoren mit ParameternConstructors with parameters 2.12.1
Konvertierungen von EigenschaftswertenProperty value conversions 2.12.1
Zugeordnete Typen ohne SchlüsselMapped types with no keys 2.12.1
KonventionenConventions JaYes 1.01.0
Benutzerdefinierte KonventionenCustom conventions JaYes 1.0 (partiell; #214)1.0 (partial; #214)
DatenanmerkungenData annotations JaYes 1.01.0
Fluent-APIFluent API JaYes 1.01.0
Vererbung: Tabelle pro Hierarchie (TPH)Inheritance: Table per hierarchy (TPH) JaYes 1.01.0
Vererbung: Tabelle pro Typ (TPT)Inheritance: Table per type (TPT) JaYes Geplant für 5.0 (#2266)Planned for 5.0 (#2266)
Vererbung: Tabelle pro konkrete Klasse (TPC)Inheritance: Table per concrete class (TPC) JaYes Stretch für 5.0 (#3170) (1)Stretch for 5.0 (#3170) (1)
Eigenschaften im SchattenzustandShadow state properties 1.01.0
Alternative SchlüsselAlternate keys 1.01.0
M:n-NavigationenMany-to-many navigations JaYes Geplant für 5.0 (#19003)Planned for 5.0 (#19003)
m:n ohne JoinentitätMany-to-many without join entity JaYes Im Rückstand (#1368)On the backlog (#1368)
Schlüsselgenerierung: DatenbankKey generation: Database JaYes 1.01.0
Schlüsselgenerierung: ClientKey generation: Client 1.01.0
Complex-/Owned-TypenComplex/owned types JaYes 2.02.0
Räumliche DatenSpatial data JaYes 2.22.2
Modellformat: CodeModel format: Code JaYes 1.01.0
Modell aus Datenbank erstellen: BefehlszeileCreate model from database: Command line JaYes 1.01.0
Modell aus Datenbank aktualisierenUpdate model from database PartialPartial Im Rückstand (#831)On the backlog (#831)
Globale AbfragefilterGlobal query filters 2.02.0
TabellenaufteilungTable splitting JaYes 2.02.0
EntitätsaufteilungEntity splitting JaYes Stretch für 5.0 (#620) (1)Stretch for 5.0 (#620) (1)
Zuordnung von Skalarfunktionen für DatenbankenDatabase scalar function mapping SchlechtPoor 2.02.0
FeldzuordnungField mapping 1.11.1
Nullwerte zulassende Verweistypen (C# 8.0)Nullable reference types (C# 8.0) 3.03.0
Grafische Visualisierung eines ModellsGraphical visualization of model JaYes Keine Unterstützung geplant (2)No support planned (2)
Grafischer Modell-EditorGraphical model editor JaYes Keine Unterstützung geplant (2)No support planned (2)
Modellformat: EDMX (XML)Model format: EDMX (XML) JaYes Keine Unterstützung geplant (2)No support planned (2)
Modell aus Datenbank erstellen: VS-AssistentCreate model from database: VS wizard JaYes Keine Unterstützung geplant (2)No support planned (2)

Abfragen von DatenQuerying data

FeatureFeature EF6.4EF6.4 EF CoreEF Core
LINQ-AbfragenLINQ queries JaYes 1.01.0
Lesbares generiertes SQLReadable generated SQL SchlechtPoor 1.01.0
GroupBy-ÜbersetzungGroupBy translation JaYes 2.12.1
Laden zugehöriger Daten: EagerLoading related data: Eager JaYes 1.01.0
Laden von verknüpften Daten: Eager Loading für abgeleitete TypenLoading related data: Eager loading for derived types 2.12.1
Laden zugehöriger Daten: LazyLoading related data: Lazy JaYes 2.12.1
Laden zugehöriger Daten: ExplizitLoading related data: Explicit JaYes 1.11.1
RAW-SQL-Abfragen: EntitätstypenRaw SQL queries: Entity types JaYes 1.01.0
Unformatierte SQL-Abfragen: Schlüssellose EntitätstypenRaw SQL queries: Keyless entity types JaYes 2.12.1
Unformatierte SQL-Abfragen: Erstellung mit LINQRaw SQL queries: Composing with LINQ 1.01.0
Explizit kompilierte AbfragenExplicitly compiled queries SchlechtPoor 2.02.0
await foreach (C# 8.0)await foreach (C# 8.0) 3.03.0
Textbasierte Abfragesprache (Entity SQL)Text-based query language (Entity SQL) JaYes Keine Unterstützung geplant (2)No support planned (2)

Speichern von DatenSaving data

FeatureFeature EF6.4EF6.4 EF CoreEF Core
Änderungsnachverfolgung: MomentaufnahmeChange tracking: Snapshot JaYes 1.01.0
Änderungsnachverfolgung: BenachrichtigungChange tracking: Notification JaYes 1.01.0
Änderungsnachverfolgung: ProxysChange tracking: Proxies JaYes Zusammengeführt für 5.0 (#10949)Merged for 5.0 (#10949)
Zugriff auf den erfassten ZustandAccessing tracked state JaYes 1.01.0
Optimistische NebenläufigkeitOptimistic concurrency JaYes 1.01.0
TransaktionenTransactions JaYes 1.01.0
AnweisungsbatchesBatching of statements 1.01.0
Mapping der gespeicherten ProzedurStored procedure mapping JaYes Im Rückstand (#245)On the backlog (#245)
Abgekoppelter Graph: Lowlevel-APIsDisconnected graph low-level APIs SchlechtPoor 1.01.0
Abgekoppelter Graph: End-to-EndDisconnected graph End-to-end 1.0 (partiell; #5536)1.0 (partial; #5536)

Andere FunktionenOther features

FeatureFeature EF6.4EF6.4 EF CoreEF Core
MigrationenMigrations JaYes 1.01.0
APIs zum Erstellen/Löschen von DatenbankenDatabase creation/deletion APIs JaYes 1.01.0
AusgangswerteSeed data JaYes 2.12.1
VerbindungsstabilitätConnection resiliency JaYes 1.11.1
InterceptorsInterceptors JaYes 3.03.0
EventsEvents JaYes 3.0 (partiell; #626)3.0 (partial; #626)
Einfache Protokollierung („Database.Log“)Simple Logging (Database.Log) JaYes Zusammengeführt für 5.0 (#1199)Merged for 5.0 (#1199)
DbContext-PoolingDbContext pooling 2.02.0

Datenbankanbieter (3)Database providers (3)

FeatureFeature EF6.4EF6.4 EF CoreEF Core
SQL ServerSQL Server JaYes 1.01.0
MySQLMySQL JaYes 1.01.0
PostgreSQLPostgreSQL JaYes 1.01.0
OracleOracle JaYes 1.01.0
SQLiteSQLite JaYes 1.01.0
SQL Server CompactSQL Server Compact JaYes 1.0 (4)1.0 (4)
DB2DB2 JaYes 1.01.0
FirebirdFirebird JaYes 2.02.0
Jet (Microsoft Access)Jet (Microsoft Access) 2.0 (4)2.0 (4)
Azure Cosmos DBAzure Cosmos DB 3.03.0
In-Memory (für Tests)In-memory (for testing) 1.01.0

1 „Stretch Goals“ werden für ein bestimmtes Release wahrscheinlich nicht erreicht.1 Stretch goals are not likely to be achieved for a given release. Wenn es jedoch gut geht, werden wir versuchen, sie einzubeziehen.However, if things go well, then we will try to pull them in.

2 Einige EF6-Features werden in EF Core nicht implementiert.2 Some EF6 features will not be implemented in EF Core. Diese Features hängen von dem EF6 zugrunde liegenden Entity Data Model (EDM) ab und/oder sind komplexe Features mit relativ geringer Rendite.These features either depend on EF6's underlying Entity Data Model (EDM) and/or are complex features with relatively low return on investment. Wir freuen uns immer über Feedback, aber obwohl EF Core viele Dinge ermöglicht, die in EF6 nicht möglich sind, kann EF Core umgekehrt nicht alle Features von EF6 unterstützen.We always welcome feedback, but while EF Core enables many things not possible in EF6, it is conversely not feasible for EF Core to support all the features of EF6.

3 Von Drittanbietern implementierte EF Core-Datenbankanbieter führen die Aktualisierung auf neue Hauptversionen von EF Core vielleicht verzögert durch.3 EF Core database providers implemented by third-parties may be delayed in updating to new major versions of EF Core. Weitere Informationen finden Sie unter Datenbankanbieter.See Database Providers for more information.

4 Die SQL Server Compact- und Jet-Anbieter funktionieren nur für .NET Framework (nicht für .NET Core).4 The SQL Server Compact and Jet providers only work on .NET Framework (not on .NET Core).

Unterstützte PlattformenSupported platforms

EF Core 3.1 wird unter .NET Core und .NET Framework durch die Verwendung von .NET Standard 2.0 ausgeführt.EF Core 3.1 runs on .NET Core and .NET Framework, through the use of .NET Standard 2.0. EF Core 5.0 kann jedoch nicht auf .NET Framework ausgeführt werden.However, EF Core 5.0 will not run on .NET Framework. Weitere Informationen finden Sie unter Plattformen.See Platforms for more details.

EF6.4 wird unter .NET Core und .NET Framework durch die Festlegung von Zielversionen ausgeführt.EF6.4 runs on .NET Core and .NET Framework, through multi-targeting.

Leitfaden für neue AnwendungenGuidance for new applications

Verwenden Sie EF Core auf .NET Core für alle neuen Anwendungen, es sei denn, die App benötigt etwas, das nur auf .NET Framework unterstützt wird.Use EF Core on .NET Core for all new applications unless the app needs something that is only supported on .NET Framework.

Leitfaden für vorhandene EF6-AnwendungenGuidance for existing EF6 applications

EF Core ist kein direkter Ersatz für EF6.EF Core is not a drop-in replacement for EF6. Für den Wechsel von EF6 zu EF Core sind wahrscheinlich Änderungen an Ihrer Anwendung erforderlich.Moving from EF6 to EF Core will likely require changes to your application.

Beim Verschieben einer EF6-App zu .NET Core:When moving an EF6 app to .NET Core:

  • Verwenden Sie EF6 weiterhin, wenn der Datenzugriffscode stabil ist und wahrscheinlich nicht weiterentwickelt wird oder neue Funktionen benötigt.Keep using EF6 if the data access code is stable and not likely to evolve or need new features.
  • Portieren Sie nach EF Core, wenn der Datenzugriffscode weiterentwickelt wird oder die neue App Funktionen benötigt, die nur in EF Core verfügbar sind.Port to EF Core if the data access code is evolving or if the app needs new features only available in EF Core.
  • Das Portieren auf EF Core wird häufig auch um der Leistung willen durchgeführt.Porting to EF Core is also often done for performance. Aber weil nicht alle Szenarien schneller sind, sollten Sie zunächst eine Profilerstellung durchführen.However, not all scenarios are faster, so do some profiling first.

Weitere Informationen finden Sie unter Portieren von EF6 auf EF Core.See Porting from EF6 to EF Core for more information.