Porównanie programów EF Core i EF6Compare EF Core & EF6

Entity Framework to maper obiektowo relacyjny (O/RM) dla platformy .NET.Entity Framework is an object-relational mapper (O/RM) for .NET. W tym artykule porównano dwie wersje: Entity Framework 6 i programem Entity Framework Core.This article compares the two versions: Entity Framework 6 and Entity Framework Core.

Entity Framework 6Entity Framework 6

Entity Framework 6 (EF6) to technologia dostępu do danych i przetestowanej.Entity Framework 6 (EF6) is a tried and tested data access technology. Najpierw został wydany w 2008 roku jako część .NET Framework 3.5 SP1 i Visual Studio 2008 z dodatkiem SP1.It was first released in 2008, as part of .NET Framework 3.5 SP1 and Visual Studio 2008 SP1. Począwszy od wersji 4.1 jest dostarczana jako EntityFramework pakietu NuGet.Starting with the 4.1 release it has shipped as the EntityFramework NuGet package. EF6 jest uruchamiany w środowisku .NET Framework 4.x, co oznacza, że działa tylko na Windows.EF6 runs on the .NET Framework 4.x, which means it runs only on Windows.

Programy EF6 w dalszym ciągu być obsługiwane produktu i będą nadal widzieć poprawki błędów i drobne ulepszenia.EF6 continues to be a supported product, and will continue to see bug fixes and minor improvements.

Entity Framework CoreEntity Framework Core

Entity Framework Core (EF Core) jest pełne ponowne zapisywanie adresów EF6, która została po raz pierwszy w 2016.Entity Framework Core (EF Core) is a complete rewrite of EF6 that was first released in 2016. Wysłaniem go w pakietach Nuget, głównym jest jeden Microsoft.EntityFrameworkCore.It ships in Nuget packages, the main one being Microsoft.EntityFrameworkCore. EF Core jest produktu dla wielu platform, które można uruchamiać na platformy .NET Core lub .NET Framework.EF Core is a cross-platform product that can run on .NET Core or .NET Framework.

EF Core zaprojektowano tak, aby zapewnić środowisko programistyczne, podobnie jak EF6.EF Core was designed to provide a developer experience similar to EF6. Większość interfejsów API najwyższego poziomu pozostają takie same, EF Core współdziałaniu znane deweloperów, którzy korzystali z platformy EF6.Most of the top-level APIs remain the same, so EF Core will feel familiar to developers who have used EF6.

Porównanie funkcjiFeature comparison

EF Core oferuje nowe funkcje, które nie będą realizowane w EF6 (takie jak klucze alternatywne, aktualizacji zbiorczych, i mieszanego ocena bazy danych i klienta w zapytaniach LINQ.EF Core offers new features that won't be implemented in EF6 (such as alternate keys, batch updates, and mixed client/database evaluation in LINQ queries. Ale ponieważ jest on nowy kod podstawowy, mu również pewne funkcje, które ma EF6.But because it's a new code base, it also lacks some features that EF6 has.

W poniższej tabeli porównano funkcje dostępne w programu EF Core i EF6.The following tables compare the features available in EF Core and EF6. Jest to porównania ogólne i nie listę wszystkich funkcji lub wyjaśniono różnice między tej samej funkcji w różnych wersjach programu EF.It's a high-level comparison and doesn't list every feature or explain differences between the same feature in different EF versions.

Kolumna programu EF Core wskazuje wersję produktu, w którym najpierw pojawiły się tę funkcję.The EF Core column indicates the product version in which the feature first appeared.

Tworzenie modeluCreating a model

FunkcjaFeature EF 6EF 6 EF CoreEF Core
Mapowanie klasy podstawoweBasic class mapping TakYes 1.01.0
Konstruktorów z parametramiConstructors with parameters 2.12.1
Konwersje wartości właściwościProperty value conversions 2.12.1
Mapowanych typach bez kluczy (typy zapytań)Mapped types with no keys (query types) 2.12.1
KonwencjeConventions TakYes 1.01.0
Konwencje niestandardoweCustom conventions TakYes 1.0 (częściowa Obsługa)1.0 (partial)
Adnotacje danychData annotations TakYes 1.01.0
Interfejs Fluent APIFluent API TakYes 1.01.0
Dziedziczenie: Tabel na hierarchii (TPH)Inheritance: Table per hierarchy (TPH) TakYes 1.01.0
Dziedziczenie: Tabela według typu (TPT)Inheritance: Table per type (TPT) TakYes
Dziedziczenie: Tabel na konkretnej klasy (TPC)Inheritance: Table per concrete class (TPC) TakYes
Właściwości stanu w tleShadow state properties 1.01.0
Klucze alternatywneAlternate keys 1.01.0
Wiele do wielu bez łączenia jednostekMany-to-many without join entity TakYes
Generowanie klucza: bazy danychKey generation: Database TakYes 1.01.0
Generowanie klucza: klientaKey generation: Client 1.01.0
Typy złożone/właścicielemComplex/owned types TakYes 2.02.0
Dane przestrzenneSpatial data TakYes
Wizualizacja graficzna modeluGraphical visualization of model TakYes
Graficzny Edytor koduGraphical model editor TakYes
Wzór format: kodModel format: Code TakYes 1.01.0
Wzór format: EDMX (XML)Model format: EDMX (XML) TakYes
Tworzenie modelu z bazy danych: wiersza poleceniaCreate model from database: Command line TakYes 1.01.0
Tworzenie modelu z bazy danych: Kreator programu VSCreate model from database: VS wizard TakYes
Aktualizowanie modelu z bazy danychUpdate model from database CzęściowePartial
Filtry zapytań globalnychGlobal query filters 2.02.0
Dzielenie tabeliTable splitting TakYes 2.02.0
Podział jednostkiEntity splitting TakYes
Mapowanie funkcji skalarnej bazy danychDatabase scalar function mapping SłaboPoor 2.02.0
Mapowanie pólField mapping 1.11.1

Wykonanie zapytania o daneQuerying data

** Funkcja**Feature EF6EF6 EF CoreEF Core
zapytania LINQLINQ queries TakYes 1.0 (w toku dla złożonych zapytań)1.0 (in-progress for complex queries)
Elementu Readable wygenerowanego kodu SQLReadable generated SQL SłaboPoor 1.01.0
Ocena mieszane klient serwerMixed client/server evaluation 1.01.0
GroupBy tłumaczeniaGroupBy translation TakYes 2.12.1
Ładowanie powiązanych danych: EagerLoading related data: Eager TakYes 1.01.0
Ładowanie powiązanych danych: Eager ładowania dla typów pochodnychLoading related data: Eager loading for derived types 2.12.1
Ładowanie powiązanych danych: powolneLoading related data: Lazy TakYes 2.12.1
Ładowanie powiązanych danych: jawneLoading related data: Explicit TakYes 1.11.1
Pierwotne zapytania SQL: typy jednostekRaw SQL queries: Entity types TakYes 1.01.0
Pierwotne zapytania SQL: typy innego niż jednostka (typy zapytań)Raw SQL queries: Non-entity types (query types) TakYes 2.12.1
Pierwotne zapytania SQL: tworzenie za pomocą LINQRaw SQL queries: Composing with LINQ 1.01.0
Zapytania skompilowane jawnieExplicitly compiled queries SłaboPoor 2.02.0
Język zapytań tekstowych (jednostki SQL)Text-based query language (Entity SQL) TakYes

Zapisywanie danychSaving data

FunkcjaFeature EF6EF6 EF CoreEF Core
Śledzenie zmian: migawkiChange tracking: Snapshot TakYes 1.01.0
Śledzenie zmian: powiadomieńChange tracking: Notification TakYes 1.01.0
Śledzenie zmian: serwery proxyChange tracking: Proxies TakYes
Uzyskiwanie dostępu do śledzonych stanuAccessing tracked state TakYes 1.01.0
Optymistyczna współbieżnośćOptimistic concurrency TakYes 1.01.0
TransakcjeTransactions TakYes 1.01.0
Przetwarzanie wsadowe instrukcjiBatching of statements 1.01.0
Mapowanie procedur składowanychStored procedure mapping TakYes
Odłączony niskiego poziomu interfejsy API grafówDisconnected graph low-level APIs SłaboPoor 1.01.0
Wykres odłączonego End-to-endDisconnected graph End-to-end 1.0 (częściowa Obsługa)1.0 (partial)

Inne funkcjeOther features

FunkcjaFeature EF6EF6 EF CoreEF Core
MigracjeMigrations TakYes 1.01.0
Baza danych tworzenia/usuwania interfejsów APIDatabase creation/deletion APIs TakYes 1.01.0
Wstępne wypełnianie danychSeed data TakYes 2.12.1
Elastyczność połączeniaConnection resiliency TakYes 1.11.1
Cykl życia przechwytuje (zdarzenia, przejmowanie)Lifecycle hooks (events, interception) TakYes
Rejestrowanie proste (Database.Log)Simple Logging (Database.Log) TakYes
Buforowanie typu DbContextDbContext pooling 2.02.0

Dostawcy baz danychDatabase providers

FunkcjaFeature EF6EF6 EF CoreEF Core
SQL ServerSQL Server TakYes 1.01.0
MySQLMySQL TakYes 1.01.0
PostgreSQLPostgreSQL TakYes 1.01.0
OracleOracle TakYes 1.0 (1)1.0 (1)
Bazy danych SQLiteSQLite TakYes 1.01.0
SQL Server CompactSQL Server Compact TakYes 1.0 (2)1.0 (2)
DB2DB2 TakYes 1.01.0
FirebirdFirebird TakYes 2.02.0
Jet (Microsoft Access)Jet (Microsoft Access) w wersji 2.0 (2)2.0 (2)
Pamięć (do testowania)In-memory (for testing) 1.01.0

1 obecnie jest dostępna dla rozwiązania Oracle płatnych dostawcy.1 There is currently a paid provider available for Oracle. Trwa praca bezpłatne oficjalnego dostawcę dla Oracle.A free official provider for Oracle is being worked on.

2 dostawcy programu SQL Server Compact i Jet działają tylko w programie .NET Framework (nie na platformie .NET Core).2 The SQL Server Compact and Jet providers only work on .NET Framework (not on .NET Core).

Implementacje platformy .NET.NET implementations

FunkcjaFeature EF6EF6 EF CoreEF Core
.NET framework (Konsola, WinForms, WPF, ASP.NET).NET Framework (Console, WinForms, WPF, ASP.NET) TakYes 1.01.0
.NET core (Konsola, platformy ASP.NET Core).NET Core (Console, ASP.NET Core) 1.01.0
Narzędzie mono i XamarinMono & Xamarin 1.0 (w toku)1.0 (in-progress)
Platforma UWPUWP 1.0 (w toku)1.0 (in-progress)

Wskazówki dotyczące nowych aplikacjiGuidance for new applications

Należy wziąć pod uwagę przy użyciu programu EF Core dla nowej aplikacji, jeśli są spełnione oba poniższe warunki:Consider using EF Core for a new application if both of the following conditions are true:

Należy wziąć pod uwagę przy użyciu platformy EF6, jeśli są spełnione oba poniższe warunki:Consider using EF6 if both of the following conditions are true:

  • Aplikacja będzie uruchamiana na Windows i program .NET Framework 4.0 lub nowszy.The app will run on Windows and the .NET Framework 4.0 or later.
  • EF6 obsługuje wszystkie funkcje, których wymaga aplikacja.EF6 supports all of the features that the app requires.

Wskazówki dotyczące istniejących aplikacji EF6Guidance for existing EF6 applications

Ze względu na fundamentalne zmiany w programie EF Core zaleca się przeniesienie aplikacji EF6 do programu EF Core, chyba że istnieje istotny powód, aby wprowadzić zmianę.Because of the fundamental changes in EF Core, we do not recommend moving an EF6 application to EF Core unless there is a compelling reason to make the change. Jeśli chcesz przejść do programu EF Core, aby korzystać z nowych funkcji, upewnij się, że masz świadomość jego pewne ograniczenia.If you want to move to EF Core to use new features, make sure you're aware of its limitations. Aby uzyskać więcej informacji, zobacz przenoszenie z programu EF6 do programu EF Core.For more information, see Porting from EF6 to EF Core. Przenoszenie z programu EF6 do programu EF Core jest więcej niż uaktualnienie portu.The move from EF6 to EF Core is more a port than an upgrade.

Następne krokiNext steps

Aby uzyskać więcej informacji zobacz dokumentację:For more information, see the documentation: