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.