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?
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