0

接続文字列でを使用して、wpf アプリのデータベース ファイルが存在するディレクトリを設定する方法を見つけました|DataDirectory|が、もう少し先に進みたいと思います。

msdn SqlConnection.ConnectionString Propertyに記載されているように、

パスは、DataDirectory 置換文字列を使用して絶対パスまたは相対パスにすることができます。DataDirectory を使用する場合、データベース ファイルは、置換文字列が指すディレクトリのサブディレクトリ内に存在する必要があります。

今、アプリケーションによって制御されるDataDirectoryカスタムDatabaseLocation属性を使用して、だけでなく完全な場所を設定したいので、接続文字列を処理する必要はありません。

つまり、接続文字列は次のようになります。

connectionString="Data Source='|DataDirectory|\database.sdf'" providerName="System.Data.SqlServerCE.4.0"

これに:

connectionString="Data Source='|DatabaseLocation|" providerName="System.Data.SqlServerCE.4.0"

コードでは、ユーザー構成を読み取り、便利なデータを適切な場所に設定します。

AppDomain.CurrentDomain.SetData("DatabaseLocation", someVarWithDatabaseLocation);

この方法ではsomeVarWithDatabaseLocation、ユーザー インターフェイスからビジネス、さらにデータ アクセスまでのコンテンツを必要とせず、接続文字列を作成できます。

これは可能ですか、それとも|DataDirectory|接続文字列ビルダーによって魔法のタグのみが処理されますか?

ありがとうございました

4

1 に答える 1

0

良い。ありません。System.Data (申し訳ありません) を逆コンパイルし、使用可能な ConnectionString コンストラクターを分析した後、ExpandDataDirectory のみが存在し、それがハードコードされていることがわかりました。

const string DataDirectory = "|datadirectory|";

だから... datadirectoyだけが扱われます...

于 2014-02-25T11:56:22.083 に答える