在.NET開發過程中,經常會在數據庫連接字符串中用到|DataDirectory|,如:
<connectionStrings>
<add name="VideoLibrary.Properties.Settings.VideoDatabaseConnectionString"
connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\VideoDatabase.mdf;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<add name="MyConnection" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\MyDB.mdb;Persist Security Info=True" providerName="System.Data.OleDb" />
那么,|DataDirectory|是代表哪個路徑呢?
By default this variable will be expanded as:
•For a local Application this will be the Assembly (App's .exe) folder。就是說,對於Windows應用程序(WinForm、WPF),數據庫文件應該和可行性文件在同一個目錄下;
•For ClickOnes running Apps it will be a special data folder created by ClickOnes。就是說,對於以ClickOnce方式運行,系統是通過AppDomain.CurrentDomain.GetData("DataDirectory")來解析的。因此,可以通過代碼指定,在WPF的App構造方法中加入代碼AppDomain.CurrentDomain.SetData("DataDirectory")=AppDomain.CurrentDomain.BaseDirectory;或者,AppDomain.CurrentDomain.SetData("DataDirectory", newDataPath);
•For ASP.NET App it will be App_Data folder.。對於ASP.NET,數據庫文件應放在App_Data目錄下。