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

3
我正在尝试在我的应用程序中使用本地数据库,并希望它驻留在我的应用程序内部的一个文件夹中。除非我遗漏了什么,否则这不应该是用户权限问题,因为它在应用程序文件夹中。
连接字符串如下:
<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),但是出现了错误:

发生文件激活错误。物理文件名 '\AppData\Database1.mdf' 可能不正确。诊断和纠正其他错误,然后重试操作。 创建数据库失败。列出的一些文件名无法创建。请检查相关错误。

那么我该如何编写指向物理文件的路径名?

1个回答

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,则数据库文件必须存在于替换字符串指向的目录的子目录中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接