Comment dois-je modifier une chaîne de connexion Entity Framework?

115

J'ai récemment dû modifier mon fichier app.config pour changer la chaîne de connexion d'un modèle de données Entity Framework ( .edmxfichier). Mais j'aimerais savoir: existe-t-il un moyen de modifier la chaîne de connexion EF à l'aide du concepteur?

La chaîne de connexion d'origine est générée automatiquement par l'assistant Entity Data Model. La chaîne de connexion ne peut alors pas être modifiée - elle reste désactivée dans la fenêtre des propriétés du concepteur .edmx. J'aime éviter d'éditer XML à la main si je le peux (dans app.config), alors je me demandais s'il existe un moyen de revenir à l'écran d'origine de l'assistant pour modifier la chaîne de connexion et laisser l'outil modifier le fichier app.config pour moi.

DéveloppeurDan
la source

Réponses:

190

Si vous supprimez la chaîne de connexion du app.configfichier, la réexécution de l'assistant de modèle de données d'entité vous guidera pour créer une nouvelle connexion.

Fabian Nicollier
la source
17
Excellent. C'est exactement la réponse que je cherchais. Juste pour être sûr, j'ai commenté la chaîne existante (plutôt que de la supprimer), enregistré les modifications app.config, cliqué avec le bouton droit sur le concepteur et choisi Mettre à jour le modèle à partir de la base de données. L'assistant m'a ensuite laissé inclure les informations sensibles (uid & pwd) dans la chaîne de connexion. Merci!
DeveloperDan
5
Si vous faites d'abord le modèle, cliquez avec le bouton droit sur le concepteur et cliquez sur `` Générer la base de données à partir du modèle '' à la place
Carl Onager
2
Cela a fonctionné pour moi aussi, sauf que j'ai dû mettre à jour le fichier App.config, puis redémarrer VS.NET 2012. Il ne détectait pas que le fichier App.config avait changé.
Garry English
2
J'ai dû appeler explicitement save sur le fichier app.config pour que le concepteur reconnaisse que la chaîne de connexion avait été supprimée.
Rossco
1
Une alternative au redémarrage de VS consiste à 1. commenter la chaîne de connexion dans app.config 2. à reconstruire le projet qui contient le .edmx 3. à cliquer avec le bouton droit de la souris sur l'aire de conception .edmx et à mettre à jour le modèle à partir de la base de données ... ce qui devrait apporter l'assistant de chaîne de connexion.
RIanGillis
18

Non, vous ne pouvez pas modifier la chaîne de connexion dans le concepteur. La chaîne de connexion ne fait pas partie du fichier EDMX, elle est simplement référencée comme valeur du fichier de configuration et probablement à cause de cela, elle est juste en lecture seule dans la fenêtre des propriétés.

La modification du fichier de configuration est une tâche courante car vous souhaitez parfois apporter des modifications sans reconstruire l'application. C'est la raison pour laquelle les fichiers de configuration existent.

Ladislav Mrnka
la source
+1 pour rappeler que: s'ils le mettent dans un fichier de configuration, cela signifie qu'ils veulent que vous puissiez le changer. J'étais principalement préoccupé par le fait que mes modifications pourraient être
annulées
Vous devriez aller changer la chaîne de connexion dans la configuration de l'application du projet auquel appartient edmx. Pas la configuration de l'application de niveau supérieur (qui est utilisée lorsqu'elle s'exécute). o_0
akava
9

Vous définissez normalement vos chaînes de connexion dans Web.config. Après avoir généré l'edmx, la chaîne de connexion sera stockée dans App.Config. Si vous souhaitez modifier la chaîne de connexion, accédez à app.config et supprimez toutes les chaînes de connexion. Maintenant, allez dans l'edmx, faites un clic droit sur la surface du concepteur, sélectionnez Mettre à jour le modèle de la base de données , choisissez la chaîne de connexion dans la liste déroulante, cliquez sur suivant , Ajouter ou Actualiser (sélectionnez ce que vous voulez) et terminez.

Dans la fenêtre de sortie, il affichera quelque chose comme ça,

Fichier de modèle généré: UpostDataModel.edmx. Le chargement des métadonnées à partir de la base de données a pris 00: 00: 00.4258157. La génération du modèle a pris 00: 00: 01.5623765. Ajout de la chaîne de connexion au fichier App.Config.

DanKodi
la source
Je rencontre un problème similaire, mais lorsque je commente la chaîne de connexion, que je mets à jour le modèle, que je choisis une nouvelle chaîne de connexion, ma classe context.cs dans le modèle est vidée. Vous ne savez pas pourquoi il fait cela à moins qu'il ne parvienne simplement à générer la classe de contexte?
bitshift
1
Il ne devrait pas faire ça. Peut-être que votre outil de création de modèles T4 est corrompu.
DanKodi
Je suis d'accord, il "ne devrait pas". Cependant, j'ai perdu le compte du nombre de fois, en apportant plus de quelques modifications non triviales au schéma sous-jacent, que j'ai dû finalement simplement souffler le modèle et en créer un nouveau. Peut-être qu'avec EF7 et sa suppression du fichier edmx pourrait aider les choses. Quoi qu'il en soit, c'est ce que j'ai fait cette fois également, j'ai mis tout en évidence dans le modèle,
j'ai appuyé
2

Ouvrez le fichier .edmx, n'importe quel éditeur de texte, modifiez le schéma = " votre schéma requis " et ouvrez également app.config / web.config , modifiez l'ID utilisateur et le mot de passe de la chaîne de connexion . vous avez terminé.

bijon75
la source
Oui, cela l'a fait.
ggderas
1

Suivez les étapes suivantes:

  1. Ouvrez l'app.config et commentez la chaîne de connexion (enregistrer le fichier)
  2. Ouvrez l'edmx (allez dans les propriétés, la chaîne de connexion doit être vide), fermez à nouveau le fichier edmx
  3. Ouvrez le fichier app.config et décommentez la chaîne de connexion (enregistrer le fichier)
  4. Ouvrez l'edmx, allez dans les propriétés, vous devriez voir la chaîne de connexion mise à jour !!
Cesar Alvarado Diaz
la source