Entity Framework - Migration

Dans Entity Framework 5 et les versions précédentes d'Entity Framework, le code était divisé entre les bibliothèques principales (principalement System.Data.Entity.dll) fournies dans le cadre du .NET Framework, et les bibliothèques supplémentaires (principalement EntityFramework.dll) étaient distribuées et expédié à l'aide de NuGet comme indiqué dans le diagramme suivant.

Dans Entity Framework 6, les API principales qui faisaient auparavant partie de .NET Framework sont également fournies et distribuées dans le cadre du package NuGet.

Cela était nécessaire pour permettre à Entity Framework d'être rendu open source. Cependant, en conséquence, les applications devront être reconstruites chaque fois qu'il est nécessaire de migrer ou de mettre à niveau votre application à partir d'anciennes versions d'Entity Framework vers EF 6.

Le processus de migration est simple si votre application utilise DbContext, qui a été fourni dans EF 4.1 et versions ultérieures. Mais si votre application est ObjectContext, peu de travail supplémentaire est nécessaire.

Jetons un coup d'œil aux étapes suivantes que vous devez suivre pour mettre à niveau une application existante vers EF6.

Step 1 - La première étape consiste à cibler .NET Framework 4.5.2 et à faire un clic droit sur votre projet et de sélectionner les propriétés.

Step 2 - Cliquez à nouveau avec le bouton droit sur votre projet et sélectionnez Gérer les packages NuGet ...

Step 3- Sous l'onglet En ligne, sélectionnez EntityFramework et cliquez sur Installer. Assurez-vous que les références d'assembly à System.Data.Entity.dll sont supprimées.

Lorsque vous installez le package EF6 NuGet, il doit supprimer automatiquement toutes les références à System.Data.Entity de votre projet pour vous.

Step 4 - Si vous avez un modèle créé avec EF Designer, vous devrez également mettre à jour les modèles de génération de code pour générer du code compatible EF6.

Step 5 - Dans votre Explorateur de solutions sous votre fichier edmx, supprimez les modèles de génération de code existants qui seront généralement nommés <edmx_file_name> .tt et <edmx_file_name> .Context.tt.

Step 6 - Ouvrez votre modèle dans EF Designer, cliquez avec le bouton droit sur l'aire de conception et sélectionnez Ajouter un élément de génération de code ...

Step 7 - Ajoutez le modèle de génération de code EF 6.x approprié.

Il générera également automatiquement du code compatible EF6.

Si vos applications utilisent EF 4.1 ou version ultérieure, vous n'aurez pas besoin de modifier quoi que ce soit dans le code, car les espaces de noms pour les types DbContext et Code First n'ont pas changé.

Mais si votre application utilise une ancienne version d'Entity Framework, des types tels que ObjectContext qui se trouvaient auparavant dans System.Data.Entity.dll ont été déplacés vers de nouveaux espaces de noms.

Step 8 - Vous devrez mettre à jour vos directives using ou Import pour construire avec EF6.

La règle générale pour les modifications d'espace de noms est que tout type de System.Data. * Est déplacé vers System.Data.Entity.Core. *. Voici quelques-uns d'entre eux -

  • System.Data.EntityException ⇒ System.Data.Entity.Core.EntityException
  • System.Data.Objects.ObjectContext ⇒ System.Data.Entity.Core.Objects.ObjectContext;
  • System.Data.Objects.DataClasses.RelationshipManager ⇒ System.Data.Entity.Core.Objects.DataClasses.RelationshipManager;

Certains types se trouvent dans les espaces de noms Core car ils ne sont pas utilisés directement pour la plupart des applications basées sur DbContext.

  • System.Data.EntityState ⇒ System.Data.Entity.EntityState
  • System.Data.Objects.DataClasses.EdmFunctionAttribute ⇒ System.Data.Entity.DbFunctionAttribute

Votre projet Entity Framework existant fonctionnera dans Entity Framework 6.0 sans aucune modification majeure.