在AppConfig中可以使用|DataDirectory|
,但我找不到任何文档?
答案 0 :(得分:77)
|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");
答案 1 :(得分:15)
在MSDN社交论坛中this可以找到答案
| DataDirectory目录| (用管道符号括起来)是一个替换字符串,表示数据库的路径。它消除了对完整路径进行硬编码的需要,这导致了几个问题,因为数据库的完整路径可以在不同的地方序列化。 DataDirectory还可以轻松共享项目以及部署应用程序。
例如,不要使用以下连接字符串:
"Data Source= c:\program files\MyApp\Mydb.sdf"
使用DataDirectory,您可以拥有以下连接字符串:
“Data Source = |DataDirectory|\Mydb.sdf”
要设置DataDirectory属性,请调用AppDomain.SetData方法。如果未设置DataDirectory属性,则将应用以下默认规则来访问数据库文件夹:
答案 2 :(得分:8)
不正确的家伙! | DataDirectory |指的是为您的实例配置的mssql \ data目录。
因此,例如我使用Visual Studio 2012与SQL Express连接。 | DataDirectory目录|将所有MDF文件放在C:\ Program Files \ Microsoft SQL Server \ MSSQL10_50.SQLEXPRESS \ MSSQL \ DATA下,其中安装了我的sql express而不是我的解决方案app_data文件夹。
该文件的名称是MVCMovie.Models.MovieDBContext,而不是我在web.config中指定的Movies.mdf。
我认为需要在visual studio中的某处配置它才能在app_data下正确放置。
答案 3 :(得分:4)
有一个名为SqlConnectionHelper的内部类,它解析它并在需要时创建MDF。
这是我能找到的关于该类和| DataDirectory |的唯一MS文档宏:http://msdn.microsoft.com/en-us/library/aa478948.aspx。
答案 4 :(得分:4)
http://msdn.microsoft.com/en-us/library/aa478948.aspx
| DataDirectory |连接字符串的一部分指定MDF文件位于App_Data目录中。
答案 5 :(得分:3)
如果您使用代码优先迁移,这可能是相关的。
使用VisualStudio 2013(至少)运行Update-Database命令时,数据目录是相对于"启动项目"目前在visual studio中配置。
即使您在另一个项目上运行Update-Database(在Package Manager控制台上选择),它也会在当前所选启动项目的App_Data上创建数据库。