Mon application utilise d'abord une base de données EDMX dans EF 4. Je voudrais tout mettre à niveau vers EF 6. Après avoir obtenu EF 6 avec NuGet, j'ai dû apporter de nombreuses modifications à mes classes qui utilisent mon modèle EF, car les espaces de noms ont été changé dans EF 6. Ensuite, j'ai réalisé que le code généré par mon EDMX utilise également les mauvais espaces de noms, etc. Je n'utilise pas de T4 personnalisé jusqu'à présent.
Comment pourrais-je mettre à niveau mon EDMX existant vers EF 6.
Je vous remercie.
En plus des réponses données ici par Rand Random et Dean Oliver, permettez-moi de mentionner ce qui suit Lien MSDN , décrivant les étapes générales pour la mise à niveau vers EF6. Ne sous-estimez pas les étapes manuelles requises ...
La feuille de route est (voir détails dans le lien ci-dessus):
Préparation: Installez les outils Entity Framework 6 pour Visual Studio 2012/13
Installez le package EF6 NuGet
Assurez-vous que les références d'assembly à System.Data.Entity.dll sont supprimées (Remarque: l'installation du package EF6 NuGet doit supprimer automatiquement toutes les références à System.Data. Entité de votre projet pour vous).
Échangez tous les modèles EF Designer (EDMX) pour utiliser la génération de code EF 6.x .
Remarques:
ObjectContext
dans votre projet, alors vous devriez envisager de télécharger le modèle "EF 6.x EntityObject Generator" . Cliquez ensuite avec le bouton droit dans le concepteur de modèle, choisissez "Ajouter un élément de génération de code", puis choisissez un nom que vous n'avez pas encore utilisé. Il générera les bonnes classes, ensuite vous devrez supprimer tous les anciens ("*.tt
") et la classe générée associée (" *.cs
") des dossiers.Mettre à jour les espaces de noms pour tous types EF principaux utilisés, c.-à-d.
System.Data.*
est déplacé vers System.Data.Entity.Core.*
System.Data.EntityState
=> System.Data.Entity.EntityState
System.Data.Objects.DataClasses.EdmFunctionAttribute
=> System.Data.Entity.DbFunctionAttribute
.System.Data.Objects.EntityFunctions
=> System.Data.Entity.DbFunctions
.DbGeography
, DbGeometry
) sont passées deSystem.Data.Spatial
=> System.Data.Entity.Spatial
N.B.:
Plus d'informations sur les modèles EF disponibles peuvent être trouvés ici sur MSDN.
Si vous recevez un avertissement d'attribut obsolète après la mise à niveau vers EF6.x, consultez cet article SO: - Comment se débarrasser d'un avertissement d'attribut obsolète?
Ainsi que les étapes suggérées par Rand Random. N'oubliez pas d'installer Entity Framework 6 Tools pour Visual Studio 2012 si vous utilisez VS2012. télécharger ici
Cela garantira que le modèle EF 6.x DbContext Generator s'affiche lorsque vous cliquez sur Étape 4: Ajouter un élément de génération de code