Porovnání EF Core a EF6

EF Core

Entity Framework Core (EF Core) je moderní mapovač databáze objektů pro .NET. Podporuje dotazy LINQ, sledování změn, aktualizace a migrace schémat.

EF Core funguje s databází SQL Server/Azure SQL, SQLite, Azure Cosmos DB, MySQL, PostgreSQL a mnoha dalšími databázemi prostřednictvím modelu modulu plug-in poskytovatele databáze.

EF6

Entity Framework 6 (EF6) je objektově relační mapovač navržený pro .NET Framework, ale s podporou .NET Core. EF6 je stabilní podporovaný produkt, ale už se aktivně nevyvíjí.

Porovnání funkcí

EF Core nabízí nové funkce, které nebudou implementovány v EF6. V EF Core ale aktuálně nejsou implementovány všechny funkce EF6.

Následující tabulky porovnávají funkce dostupné v EF Core a EF6. Toto je porovnání vysoké úrovně a neuvádí všechny funkce ani nevysvětluje rozdíly mezi stejnou funkcí v různých verzích EF.

Sloupec EF Core označuje verzi produktu, ve které se funkce poprvé objevila.

Vytvoření modelu

Funkce EF6.4 EF Core
Základní mapování tříd Ano 1.0
Konstruktory s parametry 2.1
Převody hodnot vlastností 2.1
Mapované typy bez klíčů 2.1
Konvence Ano 1.0
Vlastní konvence Ano 7.0
Datové poznámky Ano 1.0
API Fluent Ano 1.0
Dědičnost: Tabulka na hierarchii (TPH) Ano 1.0
Dědičnost: Tabulka na typ (TPT) Ano 5,0
Dědičnost: Tabulka na konkrétní třídu (TPC) Ano 7.0
Vlastnosti stínového stavu 1.0
Alternativní klíče 1.0
Navigace M:N Ano 5,0
M:N bez entity spojení Ano 5,0
Generování klíčů: Databáze Ano 1.0
Generování klíčů: Klient 1.0
Komplexní nebo vlastněné typy Ano 2.0
Prostorová data Ano 2,2
Formát modelu: Kód Ano 1.0
Vytvoření modelu z databáze: Příkazový řádek Ano 1.0
Aktualizace modelu z databáze Částečná V backlogu (#831)
Globální filtry dotazů 2.0
Dělení tabulky Ano 2.0
Dělení entity Ano 7.0
Mapování skalárních funkcí databáze Špatná 2.0
Mapování funkcí s hodnotami v databázové tabulce Špatná 5,0
Mapování polí 1,1
Odkazové typy s možnou hodnotou null (C# 8.0) 3,0
Grafická vizualizace modelu Ano Bez plánované podpory (1)
Editor grafického modelu Ano Bez plánované podpory (1)
Formát modelu: EDMX (XML) Ano Bez plánované podpory (1)
Vytvoření modelu z databáze: Průvodce VS Ano Bez plánované podpory (1)

Dotazování na data

Funkce EF6.4 EF Core
LINQ – dotazy Ano 1.0
Čitelné vygenerované SQL Špatná 1.0
Překlad GroupBy Ano 2.1
Načítání souvisejících dat: Včasné Ano 1.0
Načítání souvisejících dat: Včasné načítání pro odvozené typy 2.1
Načítání souvisejících dat: Opožděné Ano 2.1
Načítání souvisejících dat: Explicitní Ano 1,1
Nezpracované dotazy SQL: Typy entit Ano 1.0
Nezpracované dotazy SQL: Typy entit bez klíčů Ano 2.1
Nezpracované dotazy SQL: Psaní pomocí LINQ 1.0
Explicitně kompilované dotazy Špatná 2.0
await foreach (C# 8.0) 3,0
Textový dotazovací jazyk (Entity SQL) Ano Bez plánované podpory (1)

Ukládání dat

Funkce EF6.4 EF Core
Sledování změn: Snímek Ano 1.0
Sledování změn: Oznámení Ano 1.0
Sledování změn: Proxy Ano 5,0
Přístup ke sledovanému stavu Ano 1.0
Optimistická metoda souběžného zpracování Ano 1.0
Transakce Ano 1.0
Dávkování příkazů 1.0
Mapování uložených procedur Ano 7.0
Rozhraní API nízké úrovně odpojeného grafu Špatná 1.0
Odpojený graf – kompletní 1.0 (partial; #5536)

Další funkce

Funkce EF6.4 EF Core
Migrace Ano 1.0
Rozhraní API pro vytváření a odstraňování databází Ano 1.0
Počáteční data Ano 2.1
Odolnost připojení Ano 1,1
Zachycovače Ano 3,0
Událost Ano 3.0 (partial; #626)
Jednoduché protokolování (Database.Log) Ano 5,0
Sdružování DbContext 2.0

Poskytovatelé databází (2)

Funkce EF6.4 EF Core
SQL Server Ano 1.0
MySQL Ano 1.0
PostgreSQL Ano 1.0
Oracle Ano 1.0
SQLite Ano 1.0
SQL Server Compact Ano 1.0 (3)
DB2 Ano 1.0
Firebird Ano 2.0
Jet (Microsoft Access) 2.0 (3)
Azure Cosmos DB 3,0
In-memory (pro testování) 1.0

1 Některé funkce EF6 nebudou implementovány v EF Core. Tyto funkce závisí buď na podkladovém modelu Entity Data Model (EDM) EF6, nebo jsou to složité funkce s relativně nízkou návratností investice. Vždy vítáme zpětnou vazbu, ale i když EF Core umožňuje mnoho věcí, které v EF6 nejsou možné, není naopak možné, aby EF Core podporoval všechny funkce EF6.

2 U poskytovatelů databází EF Core implementovaných třetími stranami můžou být aktualizace na nové hlavní verze EF Core zpožděné. Další informace najdete v článku Poskytovatelé databází.

3 Poskytovatelé SQL Server Compact a Jet pracují pouze v rozhraní .NET Framework (nikoli v .NET Core).

Podporované platformy

EF Core 3.1 běží v rozhraní .NET Core a .NET Framework prostřednictvím rozhraní .NET Standard 2.0. EF Core 5.0 ale v rozhraní .NET Framework neběží. Další podrobnosti najdete v článku Platformy.

EF6.4 běží v rozhraní .NET Core a .NET Framework prostřednictvím cílení na více verzí.

Pokyny pro nové aplikace

EF Core v .NET Core používejte pro všechny nové aplikace, pokud aplikace nepotřebuje něco, co je podporováno pouze v rozhraní .NET Framework.

Pokyny pro existující aplikace EF6

EF Core není plnohodnotnou náhradou za EF6 bez dalších zásahů. Přechod z EF6 na EF Core pravděpodobně bude vyžadovat změny vaší aplikace.

Při přesouvání aplikace EF6 do .NET Core:

  • Pokud je kód přístupu k datům stabilní a pravděpodobně se nebude vyvíjet nebo potřebovat nové funkce, používejte dál EF6.
  • Pokud se kód přístupu k datům vyvíjí nebo pokud aplikace potřebuje nové funkce dostupné jenom v EF Core, přeneste aplikaci do EF Core.
  • Přenos do EF Core se také často provádí kvůli výkonu. Ne všechny scénáře jsou ale rychlejší, proto nejprve proveďte profilaci.

Další informace najdete v článku Přenos z EF6 do EF Core.