WPFとSQLServer2008 R2を使用して動作しているデータベースアプリケーションがあります。これは、2年間、App.ConfigファイルからSQLServer接続文字列を取得しています。数日前、ある開発マシンでApp.ConfigファイルのconnectionStringを無視し始め、現在は別の場所からの文字列(settings.settingsまたはDBMLファイルのように見えます)を使用しています。
なぜこれが起こっているのでしょうか、そしてどうすればそれをやめさせることができますか?
app.configは次のように始まります。
<configuration>
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
<connectionStrings>
<add name="DronzApp.Properties.Settings.DronzAppConnectionString"
connectionString="Server=dronz.db.123.dronzdbserver.com;Database=dronzdb;User ID=dronz;Password=secretsauce;"
providerName="System.Data.SqlClient" />
</connectionStrings>
編集:より多くの情報とどこを見るべきかについてのあなたの両方からの提案に感謝します。WPFアプリがApp.Configやその他の場所で検索する必要のある情報をどこで取得するかはわかりませんが、それを知るまでは、次の部分があります。
私のプログラムが最初に行うことの1つは、データベースをテストすることです(現在は失敗しています)。その直前に、自動生成された関数InitializeComponent()を呼び出します。この関数の自動生成されたコードは次のとおりです。
/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public void InitializeComponent() {
if (_contentLoaded) {
return;
}
_contentLoaded = true;
System.Uri resourceLocater = new System.Uri("/DronzApp;component/ui/startwindow.xaml", System.UriKind.Relative);
#line 1 "..\..\..\UI\StartWindow.xaml"
System.Windows.Application.LoadComponent(this, resourceLocater);
#line default
#line hidden
}
私のスタートウィンドウコンストラクターはInitializeComponent();を呼び出します。次に、次の行でデータベースをテストします。
int hmm = App.db.Dronz_FooTable.Count();
ここで、App.dbは、app.xaml.csファイルで次のように定義されたデータコンテキストです。
public static DronzDataDataContext db = new DronzDataDataContext();
ここで、DronzDataDataContextは、次のようなLINQ-to-SQLによって自動生成されたコードで定義されます。
パブリック部分クラスDronzDataDataContext:System.Data.Linq.DataContext..。
public DronzDataDataContext() :
base(global::DronzApp.Properties.Settings.Default.DronzConnectionString, mappingSource)
{
OnCreated();
}
以前はapp.configファイルに注意を払っていましたが、現在は注意を払っていません。DB例外(間違ったSQLサーバーを使用しようとしているためDBバージョンの問題に関するもの)をキャッチして接続文字列を確認すると、正しい接続文字列ではなく、間違ったSQLServerにファイルを要求しています。使用している接続文字列は、データベーススキーマのインポート時にLinq-to = SQLが作成したDBMLファイル、またはsettings.settingsの文字列(どこから来たのかよくわからないファイル)と一致しているようです。私がそれで何をすべきか、何をすべきでないか)。