Versions antérieures d’Entity Framework

La première version d’Entity Framework a été publiée en 2008, dans le cadre de .NET Framework 3.5 SP1 et de Visual Studio 2008 SP1.

Depuis la version EF4.1, elle est disponible en tant que package EntityFramework NuGet, l’un des packages les plus populaires sur NuGet.org.

Entre les versions 4.1 et 5.0, le package NuGet EntityFramework a étendu les bibliothèques EF fournies dans le cadre de .NET Framework.

À compter de la version 6, EF est devenu un projet open source et a également été complètement mis hors bande de .NET Framework. Cela signifie que lorsque vous ajoutez le package NuGet EntityFramework version 6 à une application, vous obtenez une copie complète de la bibliothèque EF qui ne dépend pas des bits EF fournis dans le cadre de .NET Framework. Cela a permis de relativement accélérer le rythme du développement et de la livraison de nouvelles fonctionnalités.

En juin 2016, nous avons publié EF Core 1.0. EF Core est basé sur une nouvelle codebase et est conçu comme une version plus légère et extensible d’EF. EF Core est actuellement l’objectif principal du développement pour l’équipe Entity Framework chez Microsoft. Cela signifie qu’aucune nouvelle fonctionnalité majeure n’est prévue pour EF6. Toutefois, EF6 est toujours conservé en tant que projet open source et produit Microsoft pris en charge.

Voici la liste des versions antérieures, dans l’ordre chronologique inverse, avec des informations sur les nouvelles fonctionnalités introduites dans chaque version.

Mise à jour d’EF Tools dans Visual Studio 2017 15.7

En mai 2018, nous avons publié une version mise à jour d’EF Tools dans Visual Studio 2017 15.7. Cette version contient des améliorations sur certains points de problème courants :

  • Correctifs pour plusieurs bogues d’accessibilité de l’interface utilisateur
  • Solution de contournement pour la régression des performances de SQL Server pendant la génération de modèles à partir de bases de données existantes #4
  • Prise en charge de la mise à jour des gros modèles sur SQL Server #185

Une autre amélioration de cette nouvelle version d’EF Tools est l’installation du runtime EF 6.2 quand vous créez un modèle dans un nouveau projet. Avec les versions précédentes de Visual Studio, vous pouvez utiliser le runtime EF 6.2 (ainsi que n’importe quelle version précédente d’EF) en installant la version correspondante du package NuGet.

EF 6.2.0

Le runtime EF 6.2 a été publié sur NuGet en octobre 2017. Grâce en majeure partie aux efforts de notre communauté de contributeurs open source, EF 6.2 comprend de nombreux correctifs de bogues et améliorations de produit.

Voici une courte liste des changements les plus importants du runtime EF 6.2 :

  • Réduction du temps de démarrage en chargeant les modèles Code First terminés à partir d’un cache persistant #275
  • API Fluent pour définir des index #274
  • DbFunctions.Like() pour activer l’écriture de requêtes LINQ qui se traduisent en LIKE dans SQL #241
  • Migrate.exe prend désormais en charge l’option -script #240
  • EF6 peut maintenant utiliser des valeurs de clé générées par une séquence dans SQL Server #165
  • Liste de mise à jour des erreurs temporaires pour la stratégie d’exécution de SQL Azure #83
  • Bogue : La réexécution des requêtes ou des commandes SQL échoue avec le message « SqlParameter est déjà contenu par un autre SqlParameterCollection » #81
  • Bogue : L’évaluation de DbQuery.ToString() expire dans le débogueur #73

EF 6.1.3

Le runtime EF 6.1.3 a été publié sur NuGet en octobre 2015. Cette version contient uniquement des correctifs aux défauts et aux régressions de priorité élevée signalés sur la version 6.1.2. Les correctifs sont les suivants :

  • Requête : régression dans EF 6.1.2 : introduction d’OUTER APPLY et requêtes plus complexes pour les relations 1:1 et la clause « let »
  • Problème TPT lié au masquage de la propriété de classe de base dans la classe héritée
  • DbMigration.Sql échoue lorsque le mot « go » est contenu dans le texte
  • Créer un indicateur de compatibilité pour la prise en charge d’aplatissement UnionAll et Intersect
  • La requête avec plusieurs Inclut ne fonctionne pas dans la version 6.1.2 (mais fonctionne dans la version 6.1.1)
  • Exception « Une erreur s’est produite dans votre syntaxe SQL » après la mise à niveau d’EF 6.1.1 vers la version 6.1.2

EF 6.1.2

Le runtime EF 6.1.2 a été publié sur NuGet en décembre 2014. Cette version concerne principalement les correctifs de bogues. Nous avons également accepté quelques changements notables proposés par des membres de la communauté :

  • Les paramètres du cache de requête peuvent être configurés à partir du fichier app/web.configuration
    <entityFramework>
      <queryCache size='1000' cleaningIntervalInSeconds='-1'/>
    </entityFramework>
    
  • Les méthodes SqlFile et SqlResource sur DbMigration vous permettent d’exécuter un script SQL stocké en tant que ressource incorporée ou fichier.

EF 6.1.1

Le runtime EF 6.1.1 a été publié sur NuGet en juin 2014. Cette version contient des correctifs pour les problèmes rencontrés par un certain nombre de personnes. Exemples :

  • Concepteur : Erreur lors de l’ouverture d’EF5 edmx avec précision décimale dans le concepteur EF6
  • La logique de détection d’instance par défaut pour LocalDB ne fonctionne pas avec SQL Server 2014

EF 6.1.0

Le runtime EF 6.1.0 a été publié sur NuGet en mars 2014. Cette mise à jour mineure comprend un nombre important de nouvelles fonctionnalités :

  • La consolidation des outils offre un moyen cohérent de créer un modèle EF. Cette fonctionnalité étend l’Assistant ADO.NET Entity Data Model afin de prendre en charge la création de modèles Code First, y compris l’ingénierie inverse à partir d’une base de données existante. Ces fonctionnalités étaient précédemment disponibles en version bêta dans EF Power Tools.
  • La gestion des échecs de validation de transactions fournit le paramètre CommitFailureHandler qui utilise la possibilité nouvellement introduite d’intercepter les opérations de transactions. CommitFailureHandler autorise la récupération automatique à partir d’échecs de connexion lors de la validation d’une transaction.
  • IndexAttribute permet de spécifier les index en plaçant un attribut [Index] sur une propriété (ou des propriétés) dans votre modèle Code First. Code First crée ensuite un index correspondant dans la base de données.
  • L’API de mappage public fournit l’accès aux informations contenues dans EF sur la façon dont les propriétés et les types sont mappés aux colonnes et aux tables de la base de données. Dans les versions précédentes, cette API était interne.
  • La possibilité de configurer des intercepteurs via le fichier App/Web.config permet aux intercepteurs d’être ajoutés sans devoir recompiler l’application.
  • System.Data.Entity.Infrastructure.Interception.DatabaseLoggerest un nouvel intercepteur qui facilite la journalisation de toutes les opérations de base de données dans un fichier. En combinaison avec la fonctionnalité précédente, vous pouvez facilement activer la journalisation des opérations de base de données pour une application déployée, sans avoir à effectuer de recompilation.
  • La détection des modifications de modèle de migration a été améliorée afin que les migrations générées soient plus précises. Les performances du processus de détection des modifications ont également été améliorées.
  • Améliorations des performances, notamment des opérations de base de données réduites lors de l’initialisation, des optimisations pour la comparaison de l’égalité null dans les requêtes LINQ, la génération d’affichage plus rapide (création de modèle) dans d’autres scénarios et la matérialisation plus efficace des entités suivies avec plusieurs associations.

EF 6.0.2

Le runtime EF 6.0.2 a été publié sur NuGet en décembre 2013. Cette version de correctif est limitée à la résolution des problèmes introduits dans la version EF6 (régressions des performances/comportements depuis EF5).

EF 6.0.1

Le runtime EF 6.0.1 a été publié sur NuGet en octobre 2013 simultanément avec EF 6.0.0, car ce dernier a été incorporé dans une version de Visual Studio verrouillée quelques mois plus tôt. Cette version de correctif est limitée à la résolution des problèmes introduits dans la version EF6 (régressions des performances/comportements depuis EF5). Les modifications les plus notables ont été apportées pour résoudre certains problèmes de performances lors de la préparation des modèles EF. Cela était important, car les performances de la préparation étaient un domaine d’intérêt dans EF6, et ces problèmes avaient un effet négatif sur certains gains de performances réalisés dans EF6.

EF 6.0

Le runtime EF 6.0.0 a été publié sur NuGet en octobre 2013. Il s’agit de la première version dans laquelle un runtime EF complet inclus dans le package NuGet EntityFramework ne dépend pas des bits EF qui font partie de .NET Framework. Le transfert des parties restantes du runtime vers le package NuGet nécessitait un certain nombre de changements cassants pour le code existant. Pour plus d’informations sur les étapes manuelles nécessaires à la mise à niveau, consultez la section Mise à niveau vers Entity Framework 6.

Cette version inclut de nombreuses nouvelles fonctionnalités. Les fonctionnalités suivantes fonctionnent pour les modèles créés avec Code First ou EF Designer :

  • Requête et enregistrement asynchrones ajoute la prise en charge des modèles asynchrones basés sur des tâches qui ont été introduits dans .NET 4.5.
  • Résilience de connexion permet la récupération automatique à partir d’échecs de connexion temporaires.
  • Configuration basée sur le code vous donne la possibilité d’effectuer dans le code une configuration traditionnellement réalisée dans un fichier de configuration.
  • Résolution de dépendances introduit la prise en charge du modèle de localisateur de services. Par ailleurs, certains éléments de fonctionnalités qui peuvent être remplacés par des implémentations personnalisées ont été pris en compte.
  • Interception/journalisation SQL fournit des blocs de génération de bas niveau pour l’interception d’opérations EF à l’aide d’une journalisation SQL simple intégrée.
  • L’option Améliorations de la testabilité facilite la création de doubles de test pour DbContext et DbSet en cas d’utilisation d’une infrastructure de simulation ou lors de l’écriture de vos propres doubles de test.
  • DbContext peut maintenant être créé avec une dbConnection déjà ouverte, ce qui permet des scénarios où l’ouverture de la connexion lors de la création du contexte serait utile (par exemple le partage d’une connexion entre composants où vous ne pouvez pas garantir l’état de la connexion).
  • Amélioration de la prise en charge des transactions fournit la prise en charge d’une transaction externe par l’infrastructure, ainsi que des méthodes améliorées de création de transactions au sein de l’infrastructure.
  • Énumérations, données spatiales et performances améliorées sur .NET 4.0 : en transférant les composants de base utilisés dans .NET Framework dans le package NuGet EF, nous sommes désormais en mesure d’offrir la prise en charge de l’énumération, les types de données spatiales et les améliorations de performances d’EF5 sur .NET 4.0.
  • Amélioration des performances d’Enumerable.Contains dans les requêtes LINQ.
  • Amélioration du temps de préparation (génération d’affichage),en particulier pour les grands modèles.
  • Service de pluralisation et de singularisation enfichable.
  • Les implémentations personnalisées d’Equals ou GetHashCode sur les classes d’entité sont désormais prises en charge.
  • DbSet.AddRange/RemoveRange offre un moyen optimisé d’ajouter ou de supprimer plusieurs entités d’un jeu.
  • DbChangeTracker.HasChanges offre un moyen simple et efficace de détecter les modifications en attente à enregistrer dans la base de données.
  • SqlCeFunctions fournit un SQL Compact équivalent aux SqlFunctions.

Les fonctionnalités suivantes s’appliquent uniquement à Code First :

  • Les conventions Code First personnalisés permettent d’écrire vos propres conventions pour éviter la configuration répétitive. Nous fournissons une API simple pour les conventions légères, ainsi que quelques blocs de génération plus complexes pour vous permettre de créer des conventions plus complexes.
  • Le mappage de Code First aux procédures stockées insérer/mettre à jour/supprimer est désormais pris en charge.
  • Les scripts de migrations idempotents vous permettent de générer un script SQL qui peut mettre à niveau une base de données de n’importe quelle version jusqu’à la dernière version.
  • La table d’historique des migrations configurables vous permet de personnaliser la définition de la table Historique des migrations. Cela est particulièrement utile pour les fournisseurs de bases de données qui nécessitent la spécification des types de données et autres ressources appropriés pour permettre le bon fonctionnement de la table Historique des migrations.
  • L’option Contextes multiples par base de données supprime la limitation précédente d’un modèle Code First par base de données lors de l’utilisation des migrations ou lorsque Code First a créé automatiquement la base de données pour vous.
  • DbModelBuilder.HasDefaultSchema est une nouvelle API Code First qui permet au schéma de base de données par défaut d’un modèle Code First d’être configuré à un seul endroit. Auparavant, le schéma par défaut Code First était codé en dur sur « dbo ,» et la seule façon de configurer le schéma auquel une table appartenait consistait à recourir à l’API ToTable.
  • La méthode DbModelBuilder.Configurations.AddFromAssembly vous permet d’ajouter facilement toutes les classes de configuration définies dans un assembly lorsque vous utilisez des classes de configuration avec l’API Fluent Code First.
  • Les opérations de migrations personnalisées vous permettent d’ajouter des opérations supplémentaires à utiliser dans vos migrations basées sur du code.
  • Le niveau d’isolation des transactions par défaut est remplacé par READ_COMMITTED_SNAPSHOT pour les bases de données créées à l’aide de Code First, ce qui permet d’améliorer l’extensibilité et de réduire les interblocages.
  • Les types d’entités et complexes peuvent désormais être imbriqués dans des classes.

EF 5.0

Le runtime EF 5.0.0 a été publié sur NuGet en août 2012. Cette version présente certaines nouvelles fonctionnalités, notamment la prise en charge de l’énumération, les fonctions table, les types de données spatiales et diverses améliorations de performances.

Le Concepteur Entity Framework dans Visual Studio 2012 introduit également la prise en charge de plusieurs diagrammes par modèle, la coloration des formes sur l’aire de conception et l’importation par lot de procédures stockées.

Voici une liste de contenu que nous avons regroupé spécifiquement pour la version EF 5 :

EF 4.3.1

Le runtime EF 4.3.1 a été publié sur NuGet en février 2012 peu après EF 4.3.0. Cette version de correctif inclut des correctifs de bogues dans la version EF 4.3 et introduit une meilleure prise en charge de LocalDB pour les clients utilisant EF 4.3 avec Visual Studio 2012.

Voici une liste de contenu que nous avons regroupé spécifiquement pour la version EF 4.3.1. La plupart du contenu fourni pour EF 4.1 s’applique toujours également à EF 4.3 :

EF 4.3

Le runtime EF 4.3.0 a été publié sur NuGet en février 2012. Cette version comprenait la nouvelle fonctionnalité de migration Code First, qui permet la modification incrémentielle d’une base de données créée par Code First, en fonction de l’évolution de votre modèle Code First.

Voici une liste de contenu que nous avons regroupé spécifiquement pour la version EF 4.3. La plupart du contenu fourni pour EF 4.1 s’applique toujours également à EF 4.3 :

EF 4.2

Le runtime EF 4.2.0 a été publié sur NuGet en novembre 2011. Cette version inclut des correctifs de bogues sur la version EF 4.1.1. Étant donné que cette version n’incluait que des correctifs de bogues, il aurait pu s’agir de la version de correctif EF 4.1.2, mais nous avons choisi de passer à la version 4.2 afin de nous éloigner des numéros de version de correctif basés sur la date que nous utilisions dans les versions 4.1.x et d’adopter la norme de gestion sémantique des versions pour la gestion sémantique des versions.

Voici une liste de contenu que nous avons regroupé spécifiquement pour la version EF 4.2. La plupart du contenu fourni pour EF 4.1 s’applique toujours également à EF 4.2 :

EF 4.1.1

Le runtime EF 4.1.10715 a été publié sur NuGet en juillet 2011. En plus des correctifs de bogues, cette version de correctif a introduit certains composants pour faciliter l’utilisation d’outils design-time avec un modèle Code First. Ces composants sont utilisés par les migrations Code First (inclus dans EF 4.3) et EF Power Tools.

Vous remarquerez le numéro de version peu ordinaire 4.1.10715 du package. Nous avons utilisé les versions de correctifs basés sur la date avant de décider d’adopter le contrôle de version sémantique. Considérez cette version comme EF 4.1 correctif 1 (ou EF 4.1.1).

Voici une liste de contenu que nous avons regroupé pour la version 4.1.1 :

EF 4.1

Le runtime EF 4.1.10331 a été le premier à être publié sur NuGet, en avril 2011. Cette version inclut l’API DbContext simplifiée et le flux de travail Code First.

Vous remarquerez le numéro de version peu ordinaire 4.1.10331, qui devrait vraiment être 4.1. En outre, il existe une version 4.1.10311 qui aurait dû s’appeler 4.1.0-rc (« rc » signifiant version Release Candidate). Nous avons utilisé les versions de correctifs basés sur la date avant de décider d’adopter le contrôle de version sémantique.

Voici une liste de contenu que nous avons regroupé pour la version 4.1. La majorité de ce contenu s’applique toujours aux versions ultérieures d’Entity Framework :

EF 4.0

Cette version a été incluse dans .NET Framework 4 et Visual Studio 2010, en avril 2010. Les nouvelles fonctionnalités importantes de cette version incluent la prise en charge de l’objet CLR traditionnel, le mappage de clés étrangères, le chargement différé, les améliorations de la testabilité, la génération de code personnalisable et le flux de travail Model First.

Bien qu’il s’agissait de la deuxième version d’Entity Framework, elle a été nommée EF 4 pour s’aligner sur la version de .NET Framework intégrée. Après cette version, nous avons commencé à rendre Entity Framework disponible sur NuGet et adopté le contrôle de version sémantique, car nous n’avons plus été liés à la version de .NET Framework.

Notez que certaines versions ultérieures de .NET Framework ont été fournies avec des mises à jour significatives des bits EF inclus. En fait, de nombreuses nouvelles fonctionnalités d’EF 5.0 ont été implémentées en tant qu’améliorations sur ces bits. Toutefois, pour rationaliser l’histoire de contrôle de version pour EF, nous continuons à faire référence aux bits EF qui font partie de .NET Framework en tant que runtime EF 4.0, tandis que toutes les versions plus récentes se composent du package NuGet EntityFramework.

EF 3.5

La version initiale d’Entity Framework a été incluse dans .NET 3.5 Service Pack 1 et Visual Studio 2008 SP1, publiée en août 2008. Cette version fournit une prise en charge de base d’O/RM à l’aide du flux de travail Database First.