在 AppConfig 中可以使用 |DataDirectory|
,但我找不到任何文档?
6 回答
|DataDirectory|
是一个替换字符串,因此您可以单独配置数据库文件的位置。
所以而不是:
SqlConnection c = new SqlConnection (
@"Data Source=.\SQLDB; AttachDbFilename=C:\MyDB\Database.mdf;Initial Catalog=Master");
您执行以下操作:
// Set |DataDirectory| value
AppDomain.CurrentDomain.SetData("DataDirectory", "C:\myDB");
// SQL Connection String with |DataDirectory| substitution string
SqlConnection c = new SqlConnection (
@"Data Source=.\SQLDB; AttachDbFilename=|DataDirectory|\Database.mdf;Initial Catalog=Master");
在 MSDN 社交论坛中可以找到这个答案
|数据目录| (括在管道符号中)是指示数据库路径的替换字符串。它消除了对导致几个问题的完整路径进行硬编码的需要,因为数据库的完整路径可以在不同的位置进行序列化。DataDirectory 还使共享项目和部署应用程序变得容易。
例如,而不是具有以下连接字符串:
"Data Source= c:\program files\MyApp\Mydb.sdf"
使用 DataDirectory,您可以拥有以下连接字符串:
“Data Source = |DataDirectory|\Mydb.sdf”
要设置 DataDirectory 属性,请调用 AppDomain.SetData 方法。如果不设置 DataDirectory 属性,将应用以下默认规则来访问数据库文件夹:
- 对于放在用户计算机文件夹中的应用程序,数据库文件夹使用应用程序文件夹。
- 对于在 ClickOnce 下运行的应用程序,数据库文件夹使用创建的特定数据文件夹。
不正确的家伙!|数据目录| 指为您的实例配置的 mssql\data 目录。
例如,我将 Visual Studio 2012 与 SQL Express 结合使用。|数据目录| 将所有 MDF 文件放在 C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA 下,我的 sql express 不是我的解决方案 app_data 文件夹。
该文件也是我的 web.config 中指定的名称 MVCMovie.Models.MovieDBContext 而不是 Movies.mdf。
我认为它需要在 Visual Studio 中的某个位置进行配置,以便将其适当地放置在 app_data 下。
有一个名为 SqlConnectionHelper 的内部类可以解析这个并在需要时创建 MDF。
这是我能找到的关于该类和 |DataDirectory| 的唯一 MS 文档 宏:http: //msdn.microsoft.com/en-us/library/aa478948.aspx。
http://msdn.microsoft.com/en-us/library/aa478948.aspx
|数据目录| 连接字符串的一部分指定 MDF 文件位于 App_Data 目录中。
如果您使用的是代码优先迁移,这可能是相关的。
使用 VisualStudio 2013(至少)在运行 Update-Database 命令时,数据目录与当前在 Visual Studio 中配置的“启动项目”相对。
即使您在另一个项目上运行更新数据库(在包管理器控制台上选择),它也会在当前选择的启动项目的 App_Data 上创建您的数据库。