web-dev-qa-db-ja.com

ADO.NET | DataDirectory |これはどこに文書化されていますか?

AppConfigでは|DataDirectory|を使用できますが、ドキュメントが見つかりませんか?

60

|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");
77
Alex

MSDNソーシャルフォーラムで this 回答を見つけることができます

| DataDirectory | (パイプ記号で囲まれています)は、データベースへのパスを示す置換文字列です。データベースへのフルパスをさまざまな場所でシリアル化できるため、フルパスをハードコーディングする必要がなくなり、いくつかの問題が発生します。また、DataDirectoryを使用すると、プロジェクトを簡単に共有したり、アプリケーションを展開したりできます。

たとえば、次の接続文字列の代わりに:

"Data Source= c:\program files\MyApp\Mydb.sdf"

DataDirectoryを使用すると、次の接続文字列を使用できます。

“Data Source = |DataDirectory|\Mydb.sdf”

DataDirectoryプロパティを設定するには、AppDomain.SetDataメソッドを呼び出します。 DataDirectoryプロパティを設定しない場合、次のデフォルトルールがデータベースフォルダーへのアクセスに適用されます。

  • ユーザーのコンピューター上のフォルダーに配置されるアプリケーションの場合、データベースフォルダーはアプリケーションフォルダーを使用します。
  • ClickOnceで実行されているアプリケーションの場合、データベースフォルダーは作成された特定のデータフォルダーを使用します。
15
MRG

間違った男! | 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のどこかに設定する必要があると考えています。

8
Paul Ford

これを解析し、必要に応じてMDFを作成するSqlConnectionHelperと呼ばれる内部クラスがあります。

このクラスと| DataDirectory |について私が見つけることができる唯一のMS文書は次のとおりです。マクロ: http://msdn.Microsoft.com/en-us/library/aa478948.aspx

4
codekaizen

http://msdn.Microsoft.com/en-us/library/aa478948.aspx

| DataDirectory |接続文字列の一部は、MDF=ファイルがApp_Dataディレクトリにあることを指定します。

4
Joe.P

これは、コードファーストの移行を使用している場合に関連する可能性があります。

VisualStudio 2013では、(少なくとも)Update-Databaseコマンドを実行すると、データディレクトリは、Visual Studioで現在構成されている「スタートアッププロジェクト」からの相対ディレクトリになります。

(パッケージマネージャーコンソールで選択した)別のプロジェクトでUpdate-Databaseを実行した場合でも、現在選択されているスタートアッププロジェクトのApp_Dataにデータベースが作成されます。

3
tggm