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