DBの接続文字列ってconnectionStringsでないといけないのか?
VS2005では,DBの接続文字列は設定ファイルの
大変よく出来ているとは思うのですが,この辺ってカスタマイズ出来ないのでしょうか?
なぜこんなことが必要かというと,今度開発するDLLは接続文字列をメソッド(コンストラクタ?)の引数で渡そうとしているからです.
app.configは,
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> </configSections> <connectionStrings> <add name="ConnectionConfig.Properties.Settings.NORTHWNDConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\NORTHWND.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True" providerName="System.Data.SqlClient" /> </connectionStrings> </configuration>
Settings.Designer.csという自動生成されたクラスは,
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.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.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)] [global::System.Configuration.DefaultSettingValueAttribute("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\NORTHWND.MDF;Integrated" + " Security=True;Connect Timeout=30;User Instance=True")] public string NORTHWNDConnectionString { get { return ((string)(this["NORTHWNDConnectionString"])); } } }
で,DataSet.Designer.csで接続文字列を取得している部分は,以下のような感じになっています
[System.Diagnostics.DebuggerNonUserCodeAttribute()] private void InitConnection() { this._connection = new System.Data.SqlClient.SqlConnection(); this._connection.ConnectionString = global::ConnectionConfig.Properties.Settings.Default.NORTHWNDConnectionString; }
(見づらいコードですみません.自動生成を強調するためにあえて手をいれませんでした)
これら全てが自動生成されていて,Settings.Designer.csとDataSet.Designer.csはpartialになっています.自動生成されたものに手を入れれば出来るんですが,そこは手を入れたくないし,そのためのpartialなわけだし.
いかにもカスタマイズしてください,といわんばかりなんですが,さて?どうしよう?