如何定义连接字符串以在当前文件夹中创建本地数据库?

时间:2014-06-25 10:45:50

标签: c# .net database-connection connection-string local-database

我当前的连接字符串是:

<connectionStrings>
    <add name="myConnectionString"         
         connectionString="Data Source=(LocalDB)\v11.0;Initial Catalog=CapacityDatabase.mdf;Integrated Security=True;Connect Timeout=10"
         providerName="System.Data.SqlClient"/>
  </connectionStrings>

除了在C:\Users\currentUser中创建数据库的事实之外,这个工作正常,我如何更改它以便它将在程序运行的同一文件夹中创建或定义我选择的其他位置?

1 个答案:

答案 0 :(得分:3)

您缺少AttachDBFilename=|DataDirectory|

  

DataDirectory目录| (用管道符号括起来)是替换字符串   表示数据库的路径。它消除了对它的需要   对完整路径进行硬编码会导致几个问题   数据库的路径可以在不同的地方序列化。   DataDirectory还可以轻松共享项目并进行部署   申请。

引自MSDN

  

使用AttachDBFilename连接字符串关键字添加数据库   到您的LocalDB实例。使用AttachDBFilename时,如果不使用   使用数据库连接字符串指定数据库的名称   关键字,数据库将从LocalDB实例中删除   申请结束。

尝试更改连接字符串,如下所示:

<add name="myConnectionString"
    providerName="System.Data.SqlClient"
    connectionString="Data Source=(LocalDB)\v11.0;AttachDbFileName=|DataDirectory|\CapacityDatabase.mdf;InitialCatalog=CapacityDatabase;Integrated Security=True;MultipleActiveResultSets=True" />

修改

| DataDirectory目录|是一个占位符,在ASP.Net MVC模板的情况下引用目录App_Data。这样就可以为db文件指定相对路径。 您可以为| DataDictionary |定义值像这样:

AppDomain.CurrentDomain.SetData("DataDirectory", @"C:\XYZ\App_Data\"); 

但是不可能使用指向目录结构中较高位置的相对路径。