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ématu.

EF Core funguje s SQL Serverem/Azure SQL Database, SQLite, Azure Cosmos DB, MySQL, PostgreSQL a mnoha dalšími databázemi prostřednictvím modelu databázových pluginů.

EF6

Entity Framework 6 (EF6) je objektově-relační mapovač navržený pro rozhraní .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 se ale v současné době neimplementují všechny funkce EF6.

Následující tabulky porovnávají funkce dostupné v EF Core a EF6. Toto je porovnání vysoké úrovně a nevypisuje 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
Fluent API Ano 1.0
Dědičnost: Tabulka pro hierarchii (TPH) Ano 1.0
Dědičnost: Tabulka pro každý typ (TPT) Ano 5.0
Dědičnost: Tabulka pro konkrétní třídu (TPC) Ano 7.0
Vlastnosti stínového stavu 1.0
Alternativní klíče 1.0
Navigace mnoho na mnoho Ano 5.0
M:N bez propojovací entity 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
Rozdělení entit Ano 7.0
Mapování skalárních funkcí databáze Nekvalitní 2.0
Mapování funkcí s hodnotami v tabulce databáze Nekvalitní 5.0
Mapování polí 1.1
Odkazové typy s možnou hodnotou null (C# 8.0) 3.0
Grafická vizualizace modelu Ano Žádná podpora se neplánuje (1)
Grafický editor modelů Ano Žádná podpora se neplánuje (1)
Formát modelu: EDMX (XML) Ano Žádná podpora se neplánuje (1)
Vytvoření modelu z databáze: Průvodce VS Ano Žádná podpora se neplánuje (1)

Dotazování na data

funkce EF6.4 EF Core
LINQ – dotazy Ano 1.0
Čitelné vygenerované SQL Nekvalitní 1.0
Překlad GroupBy Ano 2.1
Načítání souvisejících dat: Dychtiví Ano 1.0
Načítání souvisejících dat: Dychtivé načítání odvozených typů 2.1
Načítání souvisejících dat: Lí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 Nekvalitní 2.0
await foreach (C# 8.0) 3.0
Dotazovací jazyk založený na textu (Entity SQL) Ano Žádná podpora se neplánuje (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 servery Ano 5.0
Přístup ke sledovanému stavu Ano 1.0
Optimistická souběžnost Ano 1.0
Transakce Ano 1.0
Dávkování příkazů 1.0
Mapování uložených procedur Ano 7.0
Odpojená rozhraní API nízké úrovně grafu Nekvalitní 1.0
Odpojený graf end-to-end 1.0 (částečný; #5536)

Další funkce

funkce EF6.4 EF Core
Migrations 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
Interceptors Ano 3.0
Events Ano 3.0 (částečná; #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
V paměti (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 složité funkce s relativně nízkou návratností investic. Vždy vítáme zpětnou vazbu, ale i když EF Core umožňuje v EF6 mnoho věcí, není naopak možné, aby EF Core podporovala všechny funkce EF6.

2 poskytovatelé databáze EF Core implementované třetími stranami mohou být zpožděni při aktualizaci na nové hlavní verze EF Core. Další informace najdete v tématu Poskytovatelé databází .

3 Poskytovatelé SQL Serveru Compact a Jet pracují pouze na 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 se ale nespustí v rozhraní .NET Framework. Další podrobnosti najdete v tématu Platformy .

EF6.4 běží v rozhraní .NET Core a .NET Framework díky podpoře více cílových platforem.

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 stávající aplikace EF6

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

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

  • Pokud je kód pro přístup k datům stabilní a pravděpodobně nebude vyvíjet nebo potřebovat nové funkce, pokračujte v používání EF6.
  • Port na EF Core, pokud se kód pro přístup k datům vyvíjí nebo pokud aplikace potřebuje nové funkce dostupné jenom v 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 určitou profilaci.

Další informace najdete v tématu Přenos z EF6 do EF Core .