Après la mise à niveau de notre projet depuis Entity Framework 5 vers Entity Framework 6 (même si la fonction de mise à jour de NuGets), l’erreur suivante apparaît dans la classe Entities générée:
Erreur 1 Le type ou le nom d’espace de noms ‘Objects’ n’existe pas dans l’espace de noms ‘System.Data’
(manque-t-il une référence d’assemblage?)
Je comprends que c’est parce que l’espace de noms a changé et que je peux corriger l’erreur manuellement en modifiant mes importations à partir de: using System.Data.Objects;
et en using System.Data.Objects.DataClasses;
Pour: using System.Data.Entity.Core.Objects;
Cependant, le fichier est généré, je dois donc réappliquer ce correctif après chaque Update model from Database
. Y a-t-il quelque chose de plus à changer pour que EF génère le modèle sans cette erreur.
Je pense que votre problème est que vos modèles T4, qui génèrent les entitties et le contexte, sont toujours dans la version 5 d’EF.
Vous devez d’abord supprimer les éléments de génération de code actuels, qui se trouvent dans le code derrière le modèle, à savoir
du modèle
et
.
ajoutez un nouveau générateur de code EF version 6 avec Right click in the model designer-> Add Code Generation Item ... -> EF 6.x DbContext Generator
.
Ceci est mon expérience sur la façon de mettre à niveau avec succès Entity Framework v5 vers v6 pour:
Acronymes:
Liste de contrôle:
using System.Data.EntityClient;
, qui est une référence EF5. using System.Data.Entity.Core.EntityClient;
qui est la bonne pour EF6. Toujours coincé? Cette liste de contrôle est un wiki de communauté. N’hésitez pas à modifier cette liste de contrôle pour aider d’autres malheureux qui se heurtent encore au mur de briques qui peut être une configuration EF6.
Veuillez explorer d’autres options avant d’envisager EF. Il est 100 fois plus lent que les autres options, il est très compliqué pour ce qu’il offre, l’interface graphique de l’entité est pleine de bogues et présente des problèmes d’utilisabilité étranges, et nous allons devoir extraire tout notre code EF6 et le remplacer par quelque chose moins de 5 minutes pour faire une requête qui prend 5 secondes dans Dapper.