C#中的连接字符串,用于桌面应用程序中的本地数据库

时间:2014-05-20 16:59:24

标签: c# entity-framework-5 connection-string

我试图为我的应用程序使用本地数据库,并希望它驻留在我的应用程序内的文件夹中。 Unlees我错过了一些东西,这不应该是用户权限的问题,因为它在应用程序文件夹中。

连接字符串是:

<connectionStrings>
    <add name="Calendario2DB"
         connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=\AppData\Database1.mdf;Integrated Security=True"
         providerName="System.Data.SqlClient" />
  </connectionStrings>

我首先使用代码,因此应该在运行时生成(填充)数据库,但是我遇到了问题

AttachDbFilename=\AppData\Database1.mdf

这应该指向我的应用程序中的一个文件夹(称为appdata),但是没有处理错误:

发生了文件激活错误。物理文件名&#39; \ AppData \ Database1.mdf&#39;可能不正确。诊断并更正其他错误,然后重试该操作。 CREATE DATABASE失败。无法创建列出的某些文件名。检查相关错误。

那么如何将路径名写入phisical文件?

1 个答案:

答案 0 :(得分:4)

您应该使用内置的|DataDirectory|功能。

<connectionStrings>
  <add name="Calendario2DB"
       connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True"
       providerName="System.Data.SqlClient" />
</connectionStrings>

然后数据库将位于:

  

\ Program Files \ Application Location \ App_Data \ Database1.mdf

根据文档,您不能在不使用|DataDirectory|的情况下使用相对路径:

  

通过使用DataDirectory替换字符串,路径可以是绝对路径或相对路径。如果使用DataDirectory,则数据库文件必须存在于替换字符串指向的目录的子目录中。