web-dev-qa-db-fra.com

Comment mettre à jour un fichier dbml Linq to SQL?

Comment mettre à jour un fichier .dbml Linq to SQL?

192
Ante

Il existe trois façons de synchroniser le modèle.

  1. Supprimez les tables modifiées du concepteur et faites-les glisser de nouveau sur la surface du concepteur à partir de l'explorateur de base de données. J'ai constaté que, pour que cela fonctionne de manière fiable, vous devez:

    une. Actualiser le schéma de base de données dans l'explorateur de base de données (clic droit, actualiser)
    b. Enregistrez le concepteur après avoir supprimé les tables
    c. Enregistrez à nouveau après avoir fait glisser les tables.

    Remarque Cependant, si vous avez modifié des propriétés (par exemple, en désactivant la propriété enfant d'une association), ces modifications seront évidemment perdues. Vous devrez les refaire.

  2. Utilisez SQLMetal pour régénérer le schéma à partir de votre base de données. J'ai vu un certain nombre de billets de blog qui montrent comment scripter ceci

  3. Apportez les modifications directement dans le volet Propriétés du DBML. Cela fonctionne pour des changements simples, comme autoriser les valeurs NULL sur un champ.

Le concepteur DBML n'est pas installé par défaut dans Visual Studio 2015 ou Visual Studio 2017. Vous devrez fermer VS, démarrer le programme d'installation de VS et modifier votre installation. Les outils LINQ to SQL sont la fonctionnalité que vous devez installer.

240
Robert Harvey

Pour mettre à jour une table dans votre diagramme .dbml avec, par exemple, des colonnes ajoutées, procédez comme suit:

  1. Mettez à jour votre fenêtre SQL Server Explorer.
  2. Faites glisser la "nouvelle" version de votre table dans le diagramme .dbml (report1 dans l'image ci-dessous).

report1 is the new version of the table

  1. Marquez les colonnes ajoutées dans la nouvelle version du tableau, appuyez sur Ctrl+C copier les colonnes ajoutées.

copy the added columns

  1. Cliquez sur la "vieille" version de votre table et appuyez sur Ctrl+V coller les colonnes ajoutées dans la version déjà présente de la table.

paste the added columns to the old version of the table

47
M463

Vous pouvez également consulter l'ensemble de modèles de génération de code PLINQO , basés sur CodeSmith, qui vous permettent de faire beaucoup de choses intéressantes pour et avec Linq-to-SQL:

  • générer un fichier par classe (au lieu d'un seul fichier volumineux)
  • mettre à jour votre modèle au besoin
  • beaucoup plus de fonctionnalités

Consultez le site PLINQO à l'adresse http://www.plinqo.com et consultez les vidéos d'introduction.

Le deuxième outil que je connais est les outils Huagati DBML/EDMX , qui permettent la mise à jour des fichiers de mappage DBML (Linq-to-SQL) et EDMX (Entity Framework), etc.

Marc

5
marc_s

Nous utilisons un modèle T4 écrit personnalisé qui interroge de manière dynamique le modèle information_schema pour chaque table de tous nos fichiers .DBML, puis écrasons des parties du fichier .DBML par des informations de schéma fraîches issues de la base de données. Je fortement recommande de mettre en œuvre une solution comme celle-ci. Cela m'a permis de gagner un temps considérable. Contrairement à la suppression et à l'ajout de nouvelles tables dans votre modèle, vous conservez vos associations. Avec cette solution, vous obtiendrez des erreurs de compilation lors de la modification de votre schéma. Vous voulez toutefois vous assurer que vous utilisez un système de contrôle de version, car la différenciation est vraiment pratique. C'est une excellente solution qui fonctionne bien si vous développez avec une approche d'abord de schéma de base de données. Bien sûr, je ne peux pas partager le code de mon entreprise, vous êtes donc seul pour l'écrire vous-même. Mais si vous connaissez un peu Linq-to-XML et pouvez aller à l’école sur ce projet , vous pouvez aller où vous voulez.

4
mattmc3

Il existe une nuance dans la mise à jour des tables, puis dans le langage DBML ... Les relations de clé étrangère ne sont pas toujours immédiatement reprises si des modifications sont apportées aux tables existantes. La solution consiste à créer le projet, puis à rajouter à nouveau les tables. Je l'ai signalé à MS et sa correction pour VS2010 est en cours.

L'affichage DBML ne montre pas les nouvelles contraintes de clé étrangère


Notez que les instructions données dans la réponse principale ne sont pas claires. Pour mettre à jour le tableau

  1. Ouvrez la surface de conception dbml
  2. Sélectionnez toutes les tables avec Right-> Click-> Select All ou CTRLa
  3. CTRLx (Couper)
  4. CTRLv (Coller)
  5. Enregistrez et reconstruisez la solution.
2
ΩmegaMan

Je recommanderais d'utiliser le concepteur visuel intégré à VS2008, car la mise à jour du fichier dbml met également à jour le code généré pour vous. Si vous modifiez le dbml en dehors du concepteur visuel, le code sous-jacent serait désynchronisé.

2
Jason Miesionczek

Dans le cas d'une mise à jour de procédure stockée, vous devez le supprimer du fichier .dbml et le réinsérer. Mais si la procédure stockée a deux chemins (ex: si quelque chose; affiche des colonnes; sinon affiche d'autres colonnes), assurez-vous que les deux chemins ont les mêmes alias de colonnes !!! Sinon, seules les premières colonnes du chemin existeront.