数据库连接字符串中的|DataDirectory|

在配置文件中配置数据库连接字符串经常会用到|DataDirectory|,如下:

<connectionStrings>
    <add name="ConnectionString" connectionString="data source=.;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|	est.mdf;" providerName="System.Data.SqlClient" />
</connectionStrings>

(注:DataDirectory 仅能应指定在路径的开头,放在任何其他位置将得不到解析。 如 |DataDirectory| est.mdf被解析为 项目根目录App_Data est.mdf,

           而data|DataDirectory|  est.mdf 则视为物理路径,不会对|DataDirectory|做解析

|DataDirectory| 在WebForm项目下默认为 项目根目录app_data 文件夹,在winform和控制台项目下,则为 项目根目录indebug 或 项目根目录in elease 文件夹

实际开发过程中,一般会把数据库文件放在项目根目录下或者项目根目录下的某个文件夹中,在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

           https://www.cnblogs.com/jhxk/articles/2583680.html

原文地址:https://www.cnblogs.com/lucky-donkey/p/13945784.html