AppConfig では使用 |DataDirectory|
できますが、ドキュメントが見つかりませんか?
6 に答える
|DataDirectory|
は置換文字列であるため、データベース ファイルの場所を個別に構成できます。
したがって、代わりに:
SqlConnection c = new SqlConnection (
@"Data Source=.\SQLDB; AttachDbFilename=C:\MyDB\Database.mdf;Initial Catalog=Master");
次のことを行います。
// Set |DataDirectory| value
AppDomain.CurrentDomain.SetData("DataDirectory", "C:\myDB");
// SQL Connection String with |DataDirectory| substitution string
SqlConnection c = new SqlConnection (
@"Data Source=.\SQLDB; AttachDbFilename=|DataDirectory|\Database.mdf;Initial Catalog=Master");
MSDN ソーシャル フォーラムで、この回答を見つけることができます。
|データディレクトリ| (パイプ記号で囲まれている) は、データベースへのパスを示す置換文字列です。データベースへのフル パスが別の場所でシリアル化される可能性があるため、いくつかの問題につながるフル パスをハードコーディングする必要がなくなります。DataDirectory を使用すると、プロジェクトの共有やアプリケーションのデプロイも簡単になります。
たとえば、次の接続文字列の代わりに:
"Data Source= c:\program files\MyApp\Mydb.sdf"
DataDirectory を使用すると、次の接続文字列を使用できます。
“Data Source = |DataDirectory|\Mydb.sdf”
DataDirectory プロパティを設定するには、AppDomain.SetData メソッドを呼び出します。DataDirectory プロパティを設定しない場合、データベース フォルダーへのアクセスに次の既定の規則が適用されます。
- ユーザーのコンピューター上のフォルダーに配置されるアプリケーションの場合、データベース フォルダーはアプリケーション フォルダーを使用します。
- ClickOnce で実行されているアプリケーションの場合、データベース フォルダーは、作成された特定のデータ フォルダーを使用します。
間違った人!|データディレクトリ| インスタンスが構成されている mssql\data ディレクトリを指します。
たとえば、Visual Studio 2012 を SQL Express と組み合わせて使用しています。|データディレクトリ| すべての MDF ファイルを C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA の下に配置します。ソリューションの app_data フォルダーではなく、SQL Express がインストールされた場所です。
また、ファイルの名前は、私のweb.configで指定されているように、Movies.mdfではなくMVCMovie.Models.MovieDBContextです。
app_data の下に適切に配置するには、ビジュアル スタジオのどこかで構成する必要があると考えています。
http://msdn.microsoft.com/en-us/library/aa478948.aspx
|データディレクトリ| 接続文字列の一部は、MDF ファイルが App_Data ディレクトリにあることを指定します。
これを解析し、必要に応じて MDF を作成する SqlConnectionHelper という内部クラスがあります。
そのクラスと|DataDirectory|について見つけることができる唯一のMSドキュメントは次のとおりです。マクロ: http://msdn.microsoft.com/en-us/library/aa478948.aspx .
これは、コード ファーストの移行を使用している場合に関連する可能性があります。
VisualStudio 2013 (少なくとも) では、Update-Database コマンドを実行すると、データ ディレクトリは、Visual Studio で現在構成されている「スタートアップ プロジェクト」からの相対パスになります。
(パッケージ マネージャー コンソールで選択した) 別のプロジェクトで Update-Database を実行しても、現在選択されているスタートアップ プロジェクトの App_Data にデータベースが作成されます。