web-dev-qa-db-fra.com

Mise à jour de votre edmx pour refléter les modifications apportées à votre base de données (.net linq-to-entity)

  • J'ai donc mon edmx fait. 
  • Ensuite, je modifie un peu ma base de données, en remplaçant une colonne par NOT NULL par autoriser NULL.
  • Je vais dans mon edmx, faites un clic droit et choisissez "Mettre à jour le modèle de la base de données"

Maintenant, je vais dans mon programme et il n'a pas réellement mis à jour ... Je ne peux pas mettre un null dans la colonne. Que dois-je faire pour mettre à jour correctement edmx? Je vous remercie.

43
Stuck In Baghdad

Choisir le modèle de mise à jour à partir de la base de données est la meilleure méthode pour mettre à jour votre EDMX. Certaines propriétés ne sont pas mises à jour sur la couche conceptuelle. 

Assurez-vous que votre couche Store a été mise à jour en la visualisant dans la boîte à outils Model Viewer. Si le magasin a été correctement mis à jour, tout va bien et votre base de données est synchronisée. Si tel est le cas, accédez au concepteur visuel, cliquez sur le champ, sélectionnez Propriétés et mettez à jour la propriété NotNull du côté Conceptuel.

14
bendewey

Mettre à jour/supprimer de l'EDMX n'est pas toujours fonctionnel. Si le modèle n'est pas mis à jour en cliquant sur Mettre à jour le modèle à partir de la base de données, disons que lorsque vous avez mis à jour une vue/table dans la base de données, procédez comme suit:

1) Supprimer la vue/la table du modèle de diagramme
2) Basculez la vue EDMX en vue XML (cliquez avec le bouton droit sur le fichier edmx et sélectionnez "Ouvrir avec")
3) Rechercher et supprimer les éléments d'entité XML
4) Revenir à la vue EDMX
5) Cliquez sur Update Model from Database 

Cela devrait refléter tout type de changement que vous avez apporté à la base de données sur votre EDMX. C'est encombrant, mais fonctionne parfaitement.

Dans un monde idéal, je m'attendrais à ce que le modèle de mise à jour à partir de la base de données synchronise les modifications apportées de la base de données à EDMX. Mais ça ne marche pas la plupart du temps.

81
pencilslate

Voici ce que j’ai réussi à faire (VB.Net).

  1. apporter des mises à jour à la base de données comme souhaité/requis
  2. Choisissez "Update from database" dans le modèle EDMX, le modèle graphique affichera correctement la nouvelle structure/les nouvelles tables
  3. Développez le projet pour qu'il affiche tous les fichiers associés.
  4. Les deux fichiers avec l'extension "tt" sont ceux qui comptent: prenez d'abord celui SANS le .Context. avant l'extension tt. faites un clic droit dessus et choisissez Exécuter l'outil personnalisé:

 run custom tool

  1. Faites de même pour le fichier .tt avec le .Context. en son nom. Tous vos codes et classes de modèles logiques seront mis à jour.
19
Peter Klein

Oui, ça ne marche pas la plupart du temps: - /

La "meilleure méthode" (car cela fonctionne systématiquement) consiste à supprimer le fichier EDMX et à le générer à nouveau . Mais n'oubliez pas de supprimer la chaîne de connexion dans App.config (sinon, le testeur VS2008 ajoutera un suffixe à la valeur par défaut). nom de l’entité) et vider le cache.

J'espère que ces outils fonctionneront mieux dans une prochaine version, car ils réduisent considérablement la productivité ...

5
littlesteps

CELA IS EST LE PLUS RAPIDE:

  1. Supprimez la vue/la table du diagramme .edmx.
  2. Maintenant, utilisez le modèle de mise à jour à partir de la base de données pour rajouter le tableau.
4
stackPusher

1.Construisez le projet après la mise à jour du fichier EDMX.

2. Cliquez avec le bouton droit sur votre fichier .tt dans l'explorateur de solutions.

3. Sélectionnez l'option "Exécuter l'outil personnalisé".

Cela mettra à jour le fichier .tt.

Source: ici !

4
jagad89

Cette réponse est meilleure: https://stackoverflow.com/a/23886016/1014884

Toute édition manuelle est prête à commettre des erreurs ou sera perdue si quelqu'un utilisait un outil tel que l'assistant. La suppression et la mise à jour avec l'assistant sont bien meilleures. 

2
BillDarcy

Ouvrez le fichier edmx dans l'éditeur XML du VS et vérifiez si des erreurs ont été signalées lors de la tentative de mise à jour. 

  <!--Errors Found During Generation:
      warning 6013: The table/view 'foo.dbo.snafu' does not have a primary key   
      defined and no valid primary key could be inferred. This table/view has  
      been excluded. To use the entity you will need to review your schema,  
      add the correct keys and uncomment it.

  <EntityType Name="snafu">
    <Property Name="snafu_column" Type="smallint" />
  </EntityType>-->

Dans le cas ci-dessus ... L'ajout d'une clé primaire à la table en question a entraîné le "Modèle de mise à jour à partir de la base de données".

2
w4ik

Il ne met pas à jour par exemple la longueur maximale pour les attributs de chaîne!

Si vous travaillez avec TFS, il n'est pas bon de supprimer le fichier, vous voulez conserver l'historique et ne pas affecter les autres.

Pour moi, cela fonctionne avec un projet séparé que je peux utiliser pour recréer complètement le fichier edmx, je l'ouvre au format XML, je le colle dans l'existant et je déplace une forme dans le modèle afin que VS puisse recréer le fichier .cs . Voilà, il est maintenant mis à jour.

1
mape1082

Une vue que j'ai créée dans la base de données n'apparaissait pas dans le concepteur (après avoir choisi "Mettre à jour le modèle à partir de la base de données ..." et ajouté une coche en regard du nom de la vue). Je n'ai vu aucun message d'erreur jusqu'à ce que je passe d'EDMX en vue XML: 

  • Clic droit sur le fichier edmx 
  • Sélectionnez "Ouvrir avec ..." 
  • Sélectionnez "Sélecteur de l'éditeur automatique (XML)" 
  • Cliquez sur Rechercher et recherchez votre nom de vue.

Dans edmx XML, j'ai trouvé: 

"Erreurs détectées lors de la génération: avertissement 6013: La table/vue '(vue Nom)' n'a pas de clé primaire définie et aucune clé primaire valide Ne peut être déduite. Cette table/vue a été exclue. Pour Pour utiliser l’entité , vous devrez revoir votre schéma, ajouter les clés appropriées et le décommenter. "

J'ai modifié la vue pour avoir une clé primaire. Ensuite, j'ai ouvert le concepteur edmx et exécuté "Mettre à jour le modèle à partir de la base de données ..." et la vue est ensuite apparue dans le concepteur comme prévu, sans erreur.

1
DeveloperDan

Supprimer toutes les tables de la vue designer et mettre à jour après cela fonctionne pour moi

0
alexey