225 votes

Comment mettre à jour un fichier dbml Linq to SQL ?

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

284voto

Robert Harvey Points 103562

Il y a trois façons de garder le modèle en synchronisation.

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

    a. Rafraîchissez le schéma de la base de données dans l'explorateur de bases de données (clic droit, rafraîchir).
    b. Sauvegarder le concepteur après avoir supprimé les tables
    c. Enregistrez à nouveau après avoir fait glisser les tableaux en arrière.

    Note 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 et vous devrez les refaire.

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

  3. Effectuez des modifications directement dans le volet des propriétés de la DBML. Cela fonctionne pour les changements simples, comme autoriser les valeurs nulles dans un champ.

Le concepteur DBML n'est pas installé par défaut dans Visual Studio 2015, 2017 ou 2019. Vous devrez fermer VS, lancer le programme d'installation de VS et modifier votre installation. Le site Outils LINQ to SQL est la fonction que vous devez installer. Pour VS 2017/2019, vous pouvez la trouver sous Composants individuels > Outils de code .

1 votes

J'ai essayé 1a et 1c sans 1b et j'obtenais des erreurs 'Specified cast is not valid' en effectuant une simple sélection sur une vue. L'inclusion de 1b a réglé le problème pour moi.

6 votes

Le soutien du VS a été demandé le connect.microsoft.com/VisualStudio/feedback/details/260723/ mais MS ne veut pas réparer.

0 votes

J'ai essayé la première méthode et ça a marché. Je suppose que cela fonctionnera pour une petite DB.

14voto

Dejan Milicic Points 669

http://www.huagati.com/dbmltools/

Huagati DBML/EDMX Tools s'intègre à Visual Studio et ajoute de nouvelles fonctionnalités utiles aux concepteurs intégrés pour Linq-to-SQL et Entity Framework dans Visual Studio. Parmi les fonctionnalités ajoutées à Visual Studio par l'add-in figurent :

  1. synchroniser vos modèles Linq-to-SQL avec la base de données sous-jacente et toute modification du schéma de la base de données
  2. ...et plus encore...

5voto

marc_s Points 321990

Vous pouvez également consulter le PLINQO Ensemble 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 :

  • générer un fichier par classe (au lieu d'un seul et énorme fichier)
  • mettez votre modèle à jour si nécessaire
  • de nombreuses autres fonctionnalités

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

Le deuxième outil que je connais est le Outils Huagati DBML/EDMX qui permettent la mise à jour des fichiers de mapping DBML (Linq-to-SQL) et EDMX (Entity Framework), et plus encore (comme les conventions de nommage, etc.).

Marc

1 votes

Ayant juste arraché CodeSmith / PLINQO je conseille fortement contre en adoptant cette approche. Je vous accorde que cette réponse date de plus de 4 ans...

1 votes

@Yuck : à ce stade, je déconseille fortement l'utilisation de Linq-to-SQL - utilisez plutôt Entity Framework, un bien meilleur choix !

0 votes

Oui, c'est ça. Passer à EF après avoir vérifié que l'application fonctionnerait avec une DBML simple au lieu de PLINQO était l'étape suivante que j'ai franchie pour dépoussiérer une vieille application.

4voto

mattmc3 Points 6768

Nous utilisons un modèle T4 personnalisé qui interroge dynamiquement le modèle information_schema pour chaque table dans tous nos fichiers .DBML, puis écrase certaines parties du fichier .DBML avec des informations de schéma récentes provenant de la base de données. I hautement Je vous recommande de mettre en œuvre une solution de ce type. Elle m'a fait gagner beaucoup de temps et, contrairement à la suppression et au réajustement de vos tables dans votre modèle, vous conservez vos associations. Avec cette solution, vous obtiendrez des erreurs de compilation lorsque votre schéma sera modifié. Vous devez cependant vous assurer que vous utilisez un système de contrôle de version, car le diffing est très pratique. Il s'agit d'une excellente solution qui fonctionne bien si vous développez avec une approche basée sur le schéma de la base de données. Bien sûr, je ne peux pas partager le code de mon entreprise, vous devez donc vous débrouiller seul pour l'écrire. Mais si vous connaissez un peu de Linq-to-XML et pouvez aller à l'école sur ce projet vous pouvez arriver là où vous voulez être.

3voto

user2046967 Points 11

http://visualstudiogallery.msdn.microsoft.com/6e941187-6ae0-4ad3-994c-77d833c043c0

Un simple outil gratuit qui fait le travail pour moi...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X