我试图为我的应用程序使用本地数据库,并希望它驻留在我的应用程序内的文件夹中。 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文件?
答案 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,则数据库文件必须存在于替换字符串指向的目录的子目录中。