Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.