数据库连接字符串中的|DataDirectory|
在配置文件中配置数据库连接字符串经常会用到|DataDirectory|,如下:
<connectionStrings> <add name="ConnectionString" connectionString="data source=.;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\test.mdf;" providerName="System.Data.SqlClient" /> </connectionStrings>
(注:DataDirectory
仅能应指定在路径的开头,放在任何其他位置将得不到解析。 如 |DataDirectory|\test.mdf被解析为 项目根目录\App_Data\test.mdf,
而\data\|DataDirectory|
\test.mdf 则视为物理路径,不会对|DataDirectory|做解析)
|DataDirectory| 在WebForm项目下默认为 项目根目录\app_data 文件夹,在winform和控制台项目下,则为 项目根目录\bin\debug 或 项目根目录\bin\release 文件夹
实际开发过程中,一般会把数据库文件放在项目根目录下或者项目根目录下的某个文件夹中,在winform和控制台项目下,可以通过:
AppDomain.CurrentDomain.setData(“DataDirectory”,我的目录字符串) 来自定义|DataDirectory|的对应路径。
代码示例如下:
static void Main(string[] args) { string p = AppDomain.CurrentDomain.BaseDirectory; if (p.IndexOf("\\bin\\") > 0) { if (p.EndsWith("\\bin\\Debug\\")) p = p.Replace("\\bin\\Debug", ""); if (p.EndsWith("\\bin\\Release\\")) p = p.Replace("\\bin\\Release", ""); } if (!p.EndsWith("App_Data\\")) p = p + "App_Data\\"; AppDomain.CurrentDomain.SetData("DataDirectory", p); }
参考:https://docs.microsoft.com/zh-cn/dotnet/framework/data/adonet/ef/connection-strings