web-dev-qa-db-fra.com

Comment mettre à jour une seule table pour le modèle de la base de données avec Entity Framework?

J'ai un modèle généré à partir de db avec Entity Framework. Lorsque j'ai un changement dans la base de données, je mets à jour le modèle à partir de la base de données pour obtenir le changement de modèle. Mais cette mise à jour est appliquée à toutes les entités (tables) incluses dans le modèle.

Maintenant, j'ajoute une nouvelle colonne dans un tableau Tab1. Je ne veux pas mettre à jour le modèle à partir de la base de données comme d'autres modifications que je ne veux pas inclure dans le modèle. Je peux ajouter la nouvelle propriété dans le modèle pour l'entité Tab1 manuellement. puis il a provoqué une erreur de mappage.

Je dois donc mettre à jour Model.Store pour que le tableau inclue la nouvelle colonne. Cela signifie que je souhaite mettre à jour le modèle uniquement pour Tab1.

Comment puis-je faire ceci?

31
KentZhou

Le fichier EDMX est un fichier XML qui est une combinaison de 3 parties différentes qui composent le tout. Si vous faites un clic droit sur votre fichier EDMX et choisissez "Ouvrir avec ... XML Editor", vous verrez les 3 sections différentes:

  • <edmx:ConceptualModels>
  • <edmx:StorageModels>
  • <edmx:Mappings>

Ces sections peuvent être éditées manuellement, à vos risques et périls! :-)
De cette façon, vous ne pouvez modifier que ce dont vous avez besoin.

Notez qu'il est également possible de générer des fichiers CSDL, SSDL et MSL plutôt que de les avoir intégrés dans le fichier binaire, en changeant la propriété "Meta Artifact Processing" de votre modèle en "Copy to Output Directory".

Si vous ne voulez pas le faire manuellement, il y a outil Huagati DBML/EDMX , c'est gratuit et vous pouvez le télécharger depuis site officiel de huagati ou depuis galerie Visual Studio , qui est un plugin Visual Studio qui vous permet de sélectionner les modifications à effectuer.

44
MaxSC

J'utilise l'astuce suivante (conditionnelle). Cela ne peut être fait que lorsqu'aucune table ne dépend de la table que vous souhaitez mettre à jour.

  1. Supprimez le tableau qui doit être mis à jour.
  2. Cliquez avec le bouton droit sur Modèle et sélectionnez "Mettre à jour le modèle à partir de la base de données". Le tableau serait affiché dans l'onglet "Ajouter". Sélectionnez ce tableau et mettez à jour le modèle.

Précaution: Si d'autres tables existantes contiennent des modifications, EF mettra également à jour ces modifications.

6
Abhijeet Nagre