web-dev-qa-db-fra.com

Après la mise à jour du modèle Entity Framework, Visual Studio ne voit pas les modifications.

Si je modifie mon modèle EF 5.0, VS ne semble pas voir les modifications. J'ai essayé d'ajouter un nouveau tableau, qui se présente bien dans le modèle, mais si j'essaie de l'utiliser quelque part, le tableau n'apparaît pas dans intellisense et je ne peux pas l'utiliser.

J'ai également essayé de changer les types de données d'une colonne, ce qui semble être correct si je regarde le fichier de modèle .edmx, mais Visual Studio me donnera toujours des erreurs de compilation sur ce champ, car j'essaie d'attribuer le type de données incorrect.

Si je supprime complètement le fichier EDMX et le recrée, les modifications fonctionnent correctement. mais il est fastidieux de régénérer à partir de la base de données chaque fois que je devrais pouvoir simplement "mettre à jour le modèle à partir de la base de données" et le reconstruire.

Je n'ai jamais eu ces problèmes avec EF auparavant. Est-ce que quelqu'un sait la cause ou la solution à ce problème?

Merci.

45
Kyle

S'il s'agit d'un bogue lié au fichier edmx situé dans un dossier, le problème est résolu: téléchargez et installez VS 2012 Update 1. Vous pouvez l'obtenir à partir de: http://www.Microsoft.com/visualstudio/eng/downloads# d-visual-studio-2012-update

16
Pawel

Commencez par construire votre projet et, s'il réussit, pointez le "model.tt" dans le contexte. puis exécuter l'outil personnalisé. Ça va le réparer. 

Construisez à nouveau votre projet et pointez sur "model.context.tt" lance l'outil personnalisé. il mettra à jour les listes DbSet.

57
Mahdi Shahbazi

C'est apparemment un bogue dans Entity Framework que le modèle ne soit pas mis à jour lorsque votre fichier Edmx est situé dans un dossier. Les solutions de contournement actuellement disponibles sont les suivantes:

  1. Installez VS 2012 Update 1 qui devrait résoudre le problème.
  2. Si vous n'êtes pas en mesure d'installer la mise à jour 1, vous devrez cliquer avec le bouton droit de la souris sur le fichier de modèle model.tt T4, puis cliquer sur Exécuter outil personnalisé. Cela mettra à jour les cours pour vous.

J'espère que cela aide quelqu'un là-bas. 

Lien: http://thedatafarm.com/blog/data-access/watch-out-for-vs2012-edmx-code-generation-special-case/

14
Ghlouw

J'ai également eu ce problème, cependant, un clic droit sur le fichier model.tt et l'exécution de "Outil personnalisé" ne m'ont fait aucune différence, mais un commentaire sur la page liée à Ghlouw a mentionné l'utilisation du menu "CONSTRUIRE > Transformer tous les modèles T4. " qui l'a fait pour moi

10
Kristian

Vous devriez avoir un fichier <XXX>Model.tt quelque part, qui est le modèle T4 qui génère vos classes de modèle.

S'il se trouve dans un projet différent, il ne sera pas mis à jour lorsque vous enregistrez le fichier edmx.

Quoi qu'il en soit, essayez de cliquer dessus avec le bouton droit de la souris dans l'Explorateur de solutions et de choisir Run Custom Tool.

7
Nicholas Butler

Cliquez avec le bouton droit sur le fichier .tt et sélectionnez "Exécuter l'outil personnalisé", qui devrait le mettre à jour:  see image

5
Tshilidzi Mudau

J'ai cherché cette réponse parce que j'avais une situation similaire dans VS2013. Dans mon cas, j’ai trouvé qu’un simple "Clean Solution" effaçait toutes les anciennes définitions.

3
woodvi

J'ai également rencontré ce problème avec aucune des classes générées dans le fichier model.tt. Dans mon cas, il s'agissait de problèmes liés à la construction de la base de données dans SQL2012. J'avais mis une colonne dans une table sur nullable qui était aussi une clé étrangère et bien que je pense que vous devriez pouvoir le faire, cela a posé un problème dans EF5.

Dès que cela a été effacé et que le diagramme a été mis à jour à partir de la base de données, ils ont réapparu.

EF5 VS2013

0
CF5

Travaillez-vous dans un projet N-Tiered? Si tel est le cas, essayez de reconstruire votre couche de données (ou l'emplacement de stockage de votre fichier EDMX) avant de l'utiliser.

0
Middas