Réponses:
Il existe trois façons de synchroniser le modèle.
Supprimez les tables modifiées du concepteur et faites-les glisser 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. Actualisez le schéma de base de données dans l'explorateur de base de données (clic droit, actualisez)
b. Enregistrez le concepteur après avoir supprimé les tables
c. Enregistrez à nouveau après avoir fait glisser les tables en arrière.
Notez cependant que si vous avez modifié des propriétés (par exemple, en désactivant la propriété enfant d'une association), cela perdra évidemment ces modifications - vous devrez les refaire.
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 écrire ceci .
Apportez des modifications directement dans le volet Propriétés du DBML. Cela fonctionne pour des modifications simples, comme autoriser des valeurs nulles sur un champ.
Le concepteur DBML n'est pas installé par défaut dans Visual Studio 2015, 2017 ou 2019. Vous devrez fermer VS, démarrer le programme d'installation VS et modifier votre installation. Les outils LINQ to SQL sont la fonctionnalité que vous devez installer. Pour VS 2017/2019, vous pouvez le trouver sous Composants individuels> Outils de code .
Pour mettre à jour une table dans votre diagramme .dbml avec, par exemple, des colonnes ajoutées, procédez comme suit:
Vous pouvez également consulter l' ensemble PLINQO de modèles de génération de code, basé sur CodeSmith, qui vous permet de faire beaucoup de choses intéressantes pour et avec Linq-to-SQL:
Consultez le site PLINQO à http://www.plinqo.com et jetez un œil aux vidéos d'introduction.
Le deuxième outil que je connais sont les outils Huagati DBML / EDMX , qui permettent la mise à jour des fichiers de mappage DBML (Linq-to-SQL) et EDMX (Entity Framework), et plus (comme les conventions de dénomination, etc.).
Marc
Nous utilisons un modèle T4 écrit personnalisé qui interroge dynamiquement le modèle information_schema pour chaque table dans tous nos fichiers .DBML, puis écrase des parties du fichier .DBML avec de nouvelles informations de schéma de la base de données. Je hautementrecommande de mettre en œuvre une solution comme celle-ci - cela m'a fait gagner beaucoup de temps, et contrairement à la suppression et à l'ajout de vos tables à votre modèle, vous gardez vos associations. Avec cette solution, vous obtiendrez des erreurs de compilation lorsque votre schéma change. Vous voulez vous assurer que vous utilisez un système de contrôle de version, car la différence est vraiment pratique. Il s'agit d'une excellente solution qui fonctionne bien si vous développez avec une première approche 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.sur ce projet , vous pouvez arriver là où vous voulez être.
Je recommanderais d'utiliser le concepteur visuel intégré à VS2008, car la mise à jour du dbml met également à jour le code généré pour vous. La modification du dbml en dehors du concepteur visuel entraînerait la désynchronisation du code sous-jacent.
Il y a une nuance à mettre à jour les tables, puis à mettre à jour le DBML ... Les relations de clé étrangère ne sont pas toujours toujours apportées si des modifications sont apportées aux tables existantes. Le travail consiste à faire une génération du projet, puis à nouveau ajouter les tables. J'ai signalé cela à MS et sa correction pour VS2010.
L'affichage DBML n'affiche pas de nouvelles contraintes de clé étrangère
Notez que les instructions données dans la réponse principale ne sont pas claires. Pour mettre à jour la table
Dans le cas d'une mise à jour de procédure stockée, vous devez la supprimer du fichier .dbml et la réinsérer à nouveau. Mais si la procédure stockée a deux chemins (ex: si quelque chose; affichez quelques colonnes; sinon affichez d'autres colonnes), assurez-vous que les deux chemins ont les mêmes alias de colonnes !!! Sinon, seules les premières colonnes de chemin d'accès existeront.
Voici la méthode étape par étape complète qui a fonctionné pour moi afin de mettre à jour le LINQ to SQL dbml et les fichiers associés pour inclure une nouvelle colonne que j'ai ajoutée à l'une des tables de base de données.
Vous devez apporter les modifications à votre surface de conception comme suggéré par d'autres ci-dessus; cependant, vous devez effectuer quelques étapes supplémentaires. Ce sont les étapes complètes:
1. Drag your updated table from Server Explorer onto the design surface
2. Copy the new column from this "new" table to the "old" table (see M463 answer for details on this step)
3. Delete the "new" table that you just dragged over
4. Click and highlight the stored procedure, then delete it
5. Drag the new stored procedure and drop into place.
6. Delete the .designer.vb file in the code-behind of the .dbml
(if you do not delete this, your code-behind containing the schema will
not update even if you rebuild and the new table field will not be included)
7. Clean and Rebuild the solution (this will rebuild the .designer.vb file to include all the new changes!).