Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
EF Core
Entity Framework Core (EF Core) to nowoczesny maper bazy danych obiektów dla platformy .NET. Obsługuje zapytania LINQ, śledzenie zmian, aktualizacje i migracje schematów.
Program EF Core współpracuje z bazami danych SQL Server/Azure SQL Database, SQLite, Azure Cosmos DB, MySQL, PostgreSQL i wieloma większą liczbą baz danych za pośrednictwem modelu wtyczki dostawcy bazy danych.
EF6
Entity Framework 6 (EF6) to maper obiektowo-relacyjny przeznaczony dla platformy .NET Framework, ale z obsługą platformy .NET Core. EF6 jest stabilnym, obsługiwanym produktem, ale nie jest już aktywnie opracowywany.
Porównanie funkcji
Program EF Core oferuje nowe funkcje, które nie zostaną zaimplementowane w programie EF6. Jednak nie wszystkie funkcje EF6 są obecnie implementowane w programie EF Core.
W poniższych tabelach porównaliśmy funkcje dostępne w programach EF Core i EF6. Jest to porównanie wysokiego poziomu i nie wyświetla listy każdej funkcji ani nie wyjaśnia różnic między tą samą funkcją w różnych wersjach programu EF.
Kolumna EF Core wskazuje wersję produktu, w której po raz pierwszy pojawiła się funkcja.
Tworzenie modelu
| Funkcja | EF6.4 | EF Core |
|---|---|---|
| Mapowanie klas podstawowych | Yes | 1.0 |
| Konstruktory z parametrami | 2.1 | |
| Konwersje wartości właściwości | 2.1 | |
| Zamapowane typy bez kluczy | 2.1 | |
| Conventions | Yes | 1.0 |
| Konwencje niestandardowe | Yes | 7.0 |
| Adnotacje danych | Yes | 1.0 |
| Fluent API | Yes | 1.0 |
| Dziedziczenie: tabela na hierarchię (TPH) | Yes | 1.0 |
| Dziedziczenie: Tabela na typ (TPT) | Yes | 5.0 |
| Dziedziczenie: Tabela dla konkretnej klasy (TPC) | Yes | 7.0 |
| Właściwości stanu cień | 1.0 | |
| Klucze alternatywne | 1.0 | |
| Nawigacja wiele-do-wielu | Yes | 5.0 |
| Wiele do wielu bez jednostki sprzężenia | Yes | 5.0 |
| Generowanie klucza: baza danych | Yes | 1.0 |
| Generowanie klucza: Klient | 1.0 | |
| Typy złożone/własnościowe | Yes | 2.0 |
| Dane przestrzenne | Yes | 2,2 |
| Format modelu: Kod | Yes | 1.0 |
| Tworzenie modelu na podstawie bazy danych: wiersz polecenia | Yes | 1.0 |
| Aktualizowanie modelu z bazy danych | Częściowy | Na liście zaległości (#831) |
| Filtry zapytań globalnych | 2.0 | |
| Dzielenie tabeli | Yes | 2.0 |
| Dzielenie jednostek | Yes | 7.0 |
| Mapowanie funkcji skalarnych bazy danych | Kiepsko | 2.0 |
| Mapowanie funkcji zwracającej wartość tabeli bazy danych | Kiepsko | 5.0 |
| Mapowanie pól | 1.1 | |
| Typy odwołań dopuszczane do wartości null (C# 8.0) | 3.0 | |
| Graficzna wizualizacja modelu | Yes | Brak planowanej pomocy technicznej (1) |
| Edytor modeli graficznych | Yes | Brak planowanej pomocy technicznej (1) |
| Format modelu: EDMX (XML) | Yes | Brak planowanej pomocy technicznej (1) |
| Tworzenie modelu na podstawie bazy danych: Kreator programu VS | Yes | Brak planowanej pomocy technicznej (1) |
Zapytania dotyczące danych
| Funkcja | EF6.4 | EF Core |
|---|---|---|
| zapytania LINQ | Yes | 1.0 |
| Wygenerowany język SQL z możliwością odczytu | Kiepsko | 1.0 |
| Tłumaczenie funkcji GroupBy | Yes | 2.1 |
| Ładowanie powiązanych danych: Natychmiastowe | Yes | 1.0 |
| Ładowanie powiązanych danych: Ładowanie łapczywe dla typów pochodnych | 2.1 | |
| Ładowanie powiązanych danych: Lazy loading | Yes | 2.1 |
| Ładowanie powiązanych danych: jawne | Yes | 1.1 |
| Nieprzetworzone zapytania SQL: typy jednostek | Yes | 1.0 |
| Nieprzetworzone zapytania SQL: typy jednostek bez klucza | Yes | 2.1 |
| Nieprzetworzone zapytania SQL: komponowanie za pomocą LINQ | 1.0 | |
| Jawnie skompilowane zapytania | Kiepsko | 2.0 |
| await foreach (C# 8.0) | 3.0 | |
| Język zapytań oparty na tekście (Entity SQL) | Yes | Brak planowanej pomocy technicznej (1) |
Zapisywanie danych
| Funkcja | EF6.4 | EF Core |
|---|---|---|
| Śledzenie zmian: migawka | Yes | 1.0 |
| Śledzenie zmian: powiadomienie | Yes | 1.0 |
| Śledzenie zmian: serwery proxy | Yes | 5.0 |
| Uzyskiwanie dostępu do śledzonego stanu | Yes | 1.0 |
| Optymistyczna współbieżność | Yes | 1.0 |
| Transakcje | Yes | 1.0 |
| Grupowanie instrukcji | 1.0 | |
| Mapowanie procedur składowanych | Yes | 7.0 |
| Odłączone interfejsy API niskiego poziomu grafu | Kiepsko | 1.0 |
| Rozłączony graf od końca do końca | 1.0 (częściowe; #5536) |
Inne funkcje
| Funkcja | EF6.4 | EF Core |
|---|---|---|
| Migracje | Yes | 1.0 |
| API do usuwania i tworzenia bazy danych | Yes | 1.0 |
| Dane początkowe | Yes | 2.1 |
| Odporność połączenia | Yes | 1.1 |
| Przechwytywacze | Yes | 3.0 |
| Events | Yes | 3.0 (częściowe; #626) |
| Proste rejestrowanie (Database.Log) | Yes | 5.0 |
| Buforowanie DbContext | 2.0 |
Dostawcy baz danych (2)
| Funkcja | EF6.4 | EF Core |
|---|---|---|
| SQL Server | Yes | 1.0 |
| MySQL | Yes | 1.0 |
| PostgreSQL | Yes | 1.0 |
| Oracle | Yes | 1.0 |
| SQLite | Yes | 1.0 |
| SQL Server Compact | Yes | 1.0 (3) |
| DB2 | Yes | 1.0 |
| Firebird | Yes | 2.0 |
| Jet (Microsoft Access) | 2.0 (3) | |
| Azure Cosmos DB | 3.0 | |
| W pamięci (na potrzeby testowania) | 1.0 |
1 Niektóre funkcje EF6 nie zostaną zaimplementowane w programie EF Core. Te funkcje zależą od bazowego modelu danych jednostki (EDM) i/lub są złożonymi funkcjami o stosunkowo niskim zwrotie z inwestycji. Zawsze z zadowoleniem przyjmujemy opinię, ale chociaż program EF Core umożliwia korzystanie z wielu rzeczy, które nie są możliwe w programie EF6, z drugiej strony nie jest możliwe, aby program EF Core obsługiwał wszystkie funkcje platformy EF6.
2 Dostawcy baz danych EF Core zaimplementowani przez inne firmy mogą być opóźnieni w aktualizacji do nowych głównych wersji programu EF Core. Aby uzyskać więcej informacji, zobacz Dostawcy baz danych .
3 Dostawcy programów SQL Server Compact i Jet pracują tylko na platformie .NET Framework (nie na platformie .NET Core).
Obsługiwane platformy
Program EF Core 3.1 działa na platformach .NET Core i .NET Framework przy użyciu platformy .NET Standard 2.0. Jednak program EF Core 5.0 nie działa w programie .NET Framework. Aby uzyskać więcej informacji, zobacz Platformy .
Program EF6.4 działa na platformach .NET Core i .NET Framework poprzez wielokrotne celowanie.
Wskazówki dotyczące nowych aplikacji
Użyj programu EF Core na platformie .NET Core dla wszystkich nowych aplikacji, chyba że aplikacja potrzebuje czegoś, co jest obsługiwane tylko na platformie .NET Framework.
Wskazówki dotyczące istniejących aplikacji EF6
EF Core nie jest zamiennikiem typu "drop-in" dla EF6. Przejście z platformy EF6 do platformy EF Core prawdopodobnie będzie wymagać zmian w aplikacji.
Podczas przenoszenia aplikacji EF6 do platformy .NET Core:
- Kontynuuj korzystanie z programu EF6, jeśli kod dostępu do danych jest stabilny i prawdopodobnie nie będzie ewoluował lub potrzebuje nowych funkcji.
- Port do programu EF Core, jeśli kod dostępu do danych ewoluuje lub jeśli aplikacja potrzebuje nowych funkcji dostępnych tylko w programie EF Core.
- Przenoszenie do programu EF Core jest również często wykonywane na potrzeby wydajności. Jednak nie wszystkie scenariusze są szybsze, dlatego najpierw wykonaj pewne profilowanie.
Aby uzyskać więcej informacji, zobacz Przenoszenie z programu EF6 do programu EF Core .