Comparer EF Core et EF6Compare EF Core & EF6

Entity Framework est un mappeur objet-relationnel (ORM) pour .NET.Entity Framework is an object-relational mapper (O/RM) for .NET. Cet article compare les deux versions : Entity Framework 6 et 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) est une technologie d’accès aux données éprouvée.Entity Framework 6 (EF6) is a tried and tested data access technology. Il a été publié pour la première fois en 2008, dans le cadre de .NET Framework 3.5 SP1 et de Visual Studio 2008 SP1.It was first released in 2008, as part of .NET Framework 3.5 SP1 and Visual Studio 2008 SP1. À compter de la version 4.1, il est fourni en tant que package NuGet EntityFramework.Starting with the 4.1 release it has shipped as the EntityFramework NuGet package. EF6 s’exécute sur .NET Framework 4.x, ce qui signifie qu’il s’exécute uniquement sur Windows.EF6 runs on the .NET Framework 4.x, which means it runs only on Windows.

EF6 continue d’être un produit pris en charge et de bénéficier de correctifs de bogues et d’améliorations mineures.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) est une réécriture complète d’EF6 publiée en 2016.Entity Framework Core (EF Core) is a complete rewrite of EF6 that was first released in 2016. Il est fourni dans des packages Nuget, le principal étant Microsoft.EntityFrameworkCore.It ships in Nuget packages, the main one being Microsoft.EntityFrameworkCore. EF Core est un produit multiplateforme qui peut s’exécuter sur .NET Core ou le .NET Framework.EF Core is a cross-platform product that can run on .NET Core or .NET Framework.

EF Core a été conçu pour fournir une expérience de développement similaire à EF6.EF Core was designed to provide a developer experience similar to EF6. La plupart des API de niveau supérieur restent les mêmes ; EF Core semblera donc familier aux développeurs EF6.Most of the top-level APIs remain the same, so EF Core will feel familiar to developers who have used EF6.

Comparaison des fonctionnalitésFeature comparison

EF Core offre de nouvelles fonctionnalités qui ne seront pas implémentées dans EF6 (telles que les clés secondaires, les mises à jour par lot et l’évaluation mixte client/base de données dans les requêtes 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. Mais comme il s’agit d’une nouvelle base de code, il manque également certaines fonctionnalités présentes dans EF6.But because it's a new code base, it also lacks some features that EF6 has.

Les tableaux suivants comparent les fonctionnalités disponibles dans EF Core et EF6.The following tables compare the features available in EF Core and EF6. Il s’agit d’une comparaison générale qui ne répertorie pas toutes les fonctionnalités et n’explique pas les différences entre la même fonctionnalité dans les différentes versions d’EF.It's a high-level comparison and doesn't list every feature or explain differences between the same feature in different EF versions.

La colonne EF Core indique la version du produit dans laquelle la fonctionnalité a été introduite pour la première fois.The EF Core column indicates the product version in which the feature first appeared.

Création d’un modèleCreating a model

FonctionnalitéFeature EF 6EF 6 EF CoreEF Core
Mappage des classes de baseBasic class mapping OuiYes 1.01.0
Constructeurs avec des paramètresConstructors with parameters 2.12.1
Conversions de valeurs de propriétéProperty value conversions 2.12.1
Types mappés sans clé (types de requêtes)Mapped types with no keys (query types) 2.12.1
ConventionsConventions OuiYes 1.01.0
Conventions personnaliséesCustom conventions OuiYes 1.0 (partiel)1.0 (partial)
Annotations de donnéesData annotations OuiYes 1.01.0
API FluentFluent API OuiYes 1.01.0
Héritage : table par hiérarchie (TPH)Inheritance: Table per hierarchy (TPH) OuiYes 1.01.0
Héritage : table par type (TPT)Inheritance: Table per type (TPT) OuiYes
Héritage : table par classe concrète (TPC)Inheritance: Table per concrete class (TPC) OuiYes
Propriétés d’état de clichés instantanésShadow state properties 1.01.0
Clés secondairesAlternate keys 1.01.0
Plusieurs-à-plusieurs sans entité de jonctionMany-to-many without join entity OuiYes
Génération de clés : base de donnéesKey generation: Database OuiYes 1.01.0
Génération de clés : clientKey generation: Client 1.01.0
Types complexes/détenusComplex/owned types OuiYes 2.02.0
Données spatialesSpatial data OuiYes 2.22.2
Visualisation graphique de modèleGraphical visualization of model OuiYes
Éditeur de modèle graphiqueGraphical model editor OuiYes
Format de modèle : codeModel format: Code OuiYes 1.01.0
Format de modèle : EDMX (XML)Model format: EDMX (XML) OuiYes
Création d’un modèle à partir d’une base de données : ligne de commandeCreate model from database: Command line OuiYes 1.01.0
Création d’un modèle à partir d’une base de données : assistant VSCreate model from database: VS wizard OuiYes
Mise à jour d’un modèle à partir d’une base de donnéesUpdate model from database PartialPartial
Filtres de requête globaleGlobal query filters 2.02.0
Fractionnement de tableTable splitting OuiYes 2.02.0
Fractionnement d'entitéEntity splitting OuiYes
Mappage de fonctions scalaires de base de donnéesDatabase scalar function mapping MédiocrePoor 2.02.0
Mappage de champsField mapping 1.11.1

Interrogation des donnéesQuerying data

FonctionnalitéFeature EF6EF6 EF CoreEF Core
Requêtes LINQLINQ queries OuiYes 1.0 (en cours pour les requêtes complexes)1.0 (in-progress for complex queries)
Code SQL généré lisibleReadable generated SQL MédiocrePoor 1.01.0
Évaluation du client/serveur mixteMixed client/server evaluation 1.01.0
Traduction GroupByGroupBy translation OuiYes 2.12.1
Chargement des données associées : hâtifLoading related data: Eager OuiYes 1.01.0
Chargement de données associées : chargement hâtif pour les types dérivésLoading related data: Eager loading for derived types 2.12.1
Chargement des données associées : différéLoading related data: Lazy OuiYes 2.12.1
Chargement des données associées : expliciteLoading related data: Explicit OuiYes 1.11.1
Requêtes SQL brutes : types d’entitésRaw SQL queries: Entity types OuiYes 1.01.0
Requêtes SQL brutes : types autres que des types d’entités (types de requêtes)Raw SQL queries: Non-entity types (query types) OuiYes 2.12.1
Requêtes SQL brutes : composition avec LINQRaw SQL queries: Composing with LINQ 1.01.0
Requêtes compilées explicitementExplicitly compiled queries MédiocrePoor 2.02.0
Langage de requête textuel (Entity SQL)Text-based query language (Entity SQL) OuiYes

Enregistrement de donnéesSaving data

FonctionnalitéFeature EF6EF6 EF CoreEF Core
Suivi des modifications : instantanéChange tracking: Snapshot OuiYes 1.01.0
Suivi des modifications : notificationChange tracking: Notification OuiYes 1.01.0
Suivi des modifications : proxysChange tracking: Proxies OuiYes
État du suivi de l’accèsAccessing tracked state OuiYes 1.01.0
Accès concurrentiel optimisteOptimistic concurrency OuiYes 1.01.0
TransactionsTransactions OuiYes 1.01.0
Traitement par lot d’instructionsBatching of statements 1.01.0
Mappage de procédure stockéeStored procedure mapping OuiYes
API de bas niveau à graphes déconnectésDisconnected graph low-level APIs MédiocrePoor 1.01.0
De bout en bout à graphes déconnectésDisconnected graph End-to-end 1.0 (partiel)1.0 (partial)

Autres fonctionnalitésOther features

FonctionnalitéFeature EF6EF6 EF CoreEF Core
MigrationsMigrations OuiYes 1.01.0
API de création/suppression de base de donnéesDatabase creation/deletion APIs OuiYes 1.01.0
Données seedSeed data OuiYes 2.12.1
Résilience de la connexionConnection resiliency OuiYes 1.11.1
Raccordements de cycle de vie (événements, interception)Lifecycle hooks (events, interception) OuiYes
Journalisation simple (Database.Log)Simple Logging (Database.Log) OuiYes
Regroupement DbContextDbContext pooling 2.02.0

Fournisseurs de bases de donnéesDatabase providers

FonctionnalitéFeature EF6EF6 EF CoreEF Core
SQL ServerSQL Server OuiYes 1.01.0
MySQLMySQL OuiYes 1.01.0
PostgreSQLPostgreSQL OuiYes 1.01.0
OracleOracle OuiYes 1.0 (1)1.0 (1)
SQLiteSQLite OuiYes 1.01.0
SQL Server CompactSQL Server Compact OuiYes 1.0 (2)1.0 (2)
DB2DB2 OuiYes 1.01.0
FirebirdFirebird OuiYes 2.02.0
Jet (Microsoft Access)Jet (Microsoft Access) 2.0 (2)2.0 (2)
In-memory (pour les tests)In-memory (for testing) 1.01.0

1 Un fournisseur payant est actuellement disponible pour Oracle.1 There is currently a paid provider available for Oracle. Un fournisseur officiel gratuit pour Oracle est en cours de préparation.A free official provider for Oracle is being worked on.

2 Les fournisseurs SQL Server Compact et Jet fonctionnent uniquement sur le .NET Framework (et non sur .NET Core).2 The SQL Server Compact and Jet providers only work on .NET Framework (not on .NET Core).

Implémentations de .NET.NET implementations

FonctionnalitéFeature EF6EF6 EF CoreEF Core
.NET Framework (console, WinForms, WPF, ASP.NET).NET Framework (Console, WinForms, WPF, ASP.NET) OuiYes 1.01.0
.NET Core (console, ASP.NET Core).NET Core (Console, ASP.NET Core) 1.01.0
Mono & XamarinMono & Xamarin 1.0 (en cours)1.0 (in-progress)
UWPUWP 1.0 (en cours)1.0 (in-progress)

Conseils pour les nouvelles applicationsGuidance for new applications

Utilisez plutôt EF Core pour une nouvelle application si les deux conditions suivantes sont remplies :Consider using EF Core for a new application if both of the following conditions are true:

Utilisez plutôt EF6 si les deux conditions suivantes sont remplies :Consider using EF6 if both of the following conditions are true:

  • L’application s’exécutera sur Windows et .NET Framework 4.0 ou version ultérieure.The app will run on Windows and the .NET Framework 4.0 or later.
  • EF6 prend en charge toutes les fonctionnalités requises par l’application.EF6 supports all of the features that the app requires.

Conseils pour les applications EF6 existantesGuidance for existing EF6 applications

En raison des modifications importantes apportées à EF Core, nous vous déconseillons de migrer une application EF6 vers EF Core, à moins d’avoir une raison justifiant réellement ce changement.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. Si vous souhaitez passer à EF Core pour utiliser de nouvelles fonctionnalités, vérifiez bien ses limitations.If you want to move to EF Core to use new features, make sure you're aware of its limitations. Pour plus d’informations, consultez Portage d’EF6 vers EF Core.For more information, see Porting from EF6 to EF Core. Le déplacement d’EF6 vers EF Core est plus un portage qu’une mise à niveau.The move from EF6 to EF Core is more a port than an upgrade.

Étapes suivantesNext steps

Pour plus d’informations, consultez la documentation :For more information, see the documentation: