2010-09-22 5 views
1

J'essaie de changer la chaîne de connexion, mais il est le changement que dans la mémoire, mais pas dans le fichier app.config, voici le code que je utiliseModifier la chaîne de connexion dans l'application WPF

System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
config.ConnectionStrings.ConnectionStrings[1].ConnectionString = "metadata=res://*/TCSModel.csdl|res://*/TCSModel.ssdl|res://*/TCSModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=" + cmbServerName.Text + ";Initial Catalog=" + cmbDatabase.Text + ";User ID=" + txtUserName.Text.Trim() + ";Password=" + txtPassword.Password + ";Persist Security Info=True;MultipleActiveResultSets=True'"; 
config.ConnectionStrings.ConnectionStrings[1].Name = "TCSEntities"; 
config.ConnectionStrings.ConnectionStrings[1].ProviderName = "System.Data.EntityClient"; 
config.Save(ConfigurationSaveMode.Full, true); 
ConfigurationManager.RefreshSection("connectionStrings"); 

Ce qui manque ou mal dans le code ci-dessus?

Répondre

3

Exécutez-vous votre application dans Visual Studio? Si tel est le cas, Visual Studio crée un fichier de configuration temporaire dans votre répertoire bin. Ce fichier est mis à jour par votre code. Bien sûr, lors du prochain démarrage, il est recréé (encore une fois copié de app.config dans votre répertoire de code source), donc ressemble à la sauvegarde n'a pas fonctionné. Donc, c'est un problème qui ne se produira pas "en production".

0

Il serait utile que vous postiez votre fichier app.config. Combien de chaînes de connexion contient-elle en entrée? Ce code modifie ou définit le second dans la liste.

Essayez ceci pour voir ce qui se passe - effacer la liste et vient de mettre une nouvelle avec une seule entrée:

config.ConnectionStrings.ConnectionStrings.Clear(); 
config.ConnectionStrings.ConnectionStrings[0].ConnectionString = "metadata=res://*/TCSModel.csdl|res://*/TCSModel.ssdl|res://*/TCSModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=" + cmbServerName.Text + ";Initial Catalog=" + cmbDatabase.Text + ";User ID=" + txtUserName.Text.Trim() + ";Password=" + txtPassword.Password + ";Persist Security Info=True;MultipleActiveResultSets=True'"; 
config.ConnectionStrings.ConnectionStrings[0].Name = "TCSEntities"; 
config.ConnectionStrings.ConnectionStrings[0].ProviderName = "System.Data.EntityClient"; 

Vous pouvez également essayer d'utiliser SaveAs pour vous assurer que vous savez où la version révisée obtient la sortie.

Questions connexes