Quelle est la meilleure méthode pour gérer la string de connection dans l'application de formulaire Windows?

Mon application C # utilise DataSet et TableAdapters . Ils sont générés sous forme VS2008 GUI Tool.

Exemple:

Projet clic droit -> Ajouter un nouvel élément -> DataSet

Cette méthode ajoute automatiquement une string de connection dans app.config .

Mais c'est une méthode câblée pour la string de connection. Je veux changer la string de connection d'une manière facile. Mais lorsque j'ai utilisé un set de données, la string de connection provient de la propriété d'application. Y a-t-il une solution à cette situation?

entrez la description de l'image ici

Ceci est ma banque de strings de connection dans le file Settings.Designer.cs

  namespace WindowsFormsApplication2.Properties { [global::System.Runtime.ComstackrServices.ComstackrGeneratedAtsortingbute()] [global::System.CodeDom.Comstackr.GeneratedCodeAtsortingbute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); public static Settings Default { get { return defaultInstance; } } [global::System.Configuration.ApplicationScopedSettingAtsortingbute()] [global::System.Diagnostics.DebuggerNonUserCodeAtsortingbute()] [global::System.Configuration.SpecialSettingAtsortingbute(global::System.Configuration.SpecialSetting.ConnectionSsortingng)] [global::System.Configuration.DefaultSettingValueAtsortingbute("Data Source=SLCERT\\SQLEMK;Initial Catalog=TestDataBase;Integrated Security=True")] public ssortingng TestDataBaseConnectionSsortingng { get { return ((ssortingng)(this["TestDataBaseConnectionSsortingng"])); // this is the connection ssortingng get from the dataset's } } } } 

app.config contient

 <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> </configSections> <connectionSsortingngs> <add name="WindowsFormsApplication2.Properties.Settings.TestDataBaseConnectionSsortingng" connectionSsortingng="Data Source=SLCERT\SQLEMK;Initial Catalog=TestDataBase;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionSsortingngs> </configuration> 

    Je crois que vous posez cette question, de sorte que vous n'avez pas à changer manuellement entre les tests locaux et le server de production / test.

    Vous pouvez consulter Comment: transformer Web.config lors du deployment d'un projet d'application Web

    il s'agit de web.config au lieu de app.config mais c'est la même idée.

    ps. seulement pour VS 2010 et au-dessus

    Autre que la suggestion fournie par JP Hellemons pour faire des transformations de configuration, il y a quelque chose d'autre que vous pouvez faire, car cela est seulement supporté (nativement) par .NET 4.0. Vous pouvez append n'importe quel nombre de strings de connection à la section <connectionSsortingngs/> d'un file de configuration, ajoutez donc un "DebugConnectionSsortingng" et un "ReleaseConnectionSsortingng", ou similaire.

    Maintenant, afin de les utiliser sans intervention à chaque changement d'environnement, vous pouvez utiliser des constantes de trace. Dites sur local dans Visual Studio que vous comstackz avec le jeu de constantes DEBUG et lorsque vous le déployez pour la version, il n'est pas présent, alors vous pouvez faire quelque chose comme:

     #if DEBUG return ConfigurationManager.ConnectionSsortingngs["DebugConnectionSsortingng"]; #else return ConfigurationManager.ConnectionSsortingngs["ReleaseConnectionSsortingng"]; #endif 

    dans app.config

     <configuration> <configSections> </configSections> <connectionSsortingngs> <add name="DBCS" connectionSsortingng="Data Source=|DataDirectory|\Database.sdf;password=Password" providerName="Microsoft.SqlServerCe.Client.3.5" /> </connectionSsortingngs> 

    et y accéder comme ça

     static ssortingng CS = ConfigurationManager.ConnectionSsortingngs["DBCS"].ConnectionSsortingng.ToSsortingng(); 

    comprendre

     System.Configuration; 

    espace de noms