AppConfigでは|DataDirectory|
を使用できますが、ドキュメントが見つかりませんか?
|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ソーシャルフォーラムで this 回答を見つけることができます
| DataDirectory | (パイプ記号で囲まれています)は、データベースへのパスを示す置換文字列です。データベースへのフルパスをさまざまな場所でシリアル化できるため、フルパスをハードコーディングする必要がなくなり、いくつかの問題が発生します。また、DataDirectoryを使用すると、プロジェクトを簡単に共有したり、アプリケーションを展開したりできます。
たとえば、次の接続文字列の代わりに:
"Data Source= c:\program files\MyApp\Mydb.sdf"
DataDirectoryを使用すると、次の接続文字列を使用できます。
“Data Source = |DataDirectory|\Mydb.sdf”
DataDirectoryプロパティを設定するには、AppDomain.SetDataメソッドを呼び出します。 DataDirectoryプロパティを設定しない場合、次のデフォルトルールがデータベースフォルダーへのアクセスに適用されます。
間違った男! | DataDirectory |インスタンスが設定されているmssql\dataディレクトリを指します。
そのため、たとえば、SQL Expressと組み合わせてVisual Studio 2012を使用しています。 | DataDirectory |すべての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の下に適切に配置するには、Visual Studioのどこかに設定する必要があると考えています。
これを解析し、必要に応じてMDFを作成するSqlConnectionHelperと呼ばれる内部クラスがあります。
このクラスと| DataDirectory |について私が見つけることができる唯一のMS文書は次のとおりです。マクロ: http://msdn.Microsoft.com/en-us/library/aa478948.aspx 。
http://msdn.Microsoft.com/en-us/library/aa478948.aspx
| DataDirectory |接続文字列の一部は、MDF=ファイルがApp_Dataディレクトリにあることを指定します。
これは、コードファーストの移行を使用している場合に関連する可能性があります。
VisualStudio 2013では、(少なくとも)Update-Databaseコマンドを実行すると、データディレクトリは、Visual Studioで現在構成されている「スタートアッププロジェクト」からの相対ディレクトリになります。
(パッケージマネージャーコンソールで選択した)別のプロジェクトでUpdate-Databaseを実行した場合でも、現在選択されているスタートアッププロジェクトのApp_Dataにデータベースが作成されます。