ADO.NET | DataDirectory | 这在哪里logging?

在AppConfig中,可以使用|DataDirectory| 但我找不到任何文件?

|DataDirectory| 是一个replacestring,因此您可以分别configuration数据库文件的位置。

所以,而不是:

 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社交论坛中可以find这个答案

| DataDirectory目录| (包含在pipe道符号中)是一个替代string,用于指示数据库的path。 它消除了对完整path进行硬编码的必要性,因为数据库的完整path可能会在不同的地方被序列化,从而导致几个问题。 DataDirectory也可以轻松地共享一个项目,也可以部署一个应用程序。

例如,而不是具有以下连接string:

 "Data Source= c:\program files\MyApp\Mydb.sdf" 

使用DataDirectory,可以有以下连接string:

 “Data Source = |DataDirectory|\Mydb.sdf” 

要设置DataDirectory属性,请调用AppDomain.SetData方法。 如果您不设置DataDirectory属性,则将应用以下默认规则来访问数据库文件夹:

  • 对于放在用户计算机上的文件夹中的应用程序,数据库文件夹使用应用程序文件夹。
  • 对于在ClickOnce下运行的应用程序,数据库文件夹使用创build的特定数据文件夹。

不正确的家伙! | DataDirectory | 指的是您的实例configuration的mssql \ data目录。

因此,例如,我正在使用SQL Express与Visual Studio 2012不兼容。 | DataDirectory目录| 将所有MDF文件放在C:\ Program Files \ Microsoft SQL Server \ MSSQL10_50.SQLEXPRESS \ MSSQL \ DATA下安装了我的sql express,而不是解决schemeapp_data文件夹。

此外,该文件名称MVCMovie.Models.MovieDBContext不是我的web.config中指定的Movies.mdf。

我想它需要在Visual Studio中的某处进行configuration,以便将其正确放置在app_data下。

有一个名为SqlConnectionHelper的内部类,它parsing这个并根据需要创buildMDF。

这里是我可以find有关该类和| DataDirectory |的唯一MS文档 macros: http : //msdn.microsoft.com/en-us/library/aa478948.aspx 。

http://msdn.microsoft.com/en-us/library/aa478948.aspx

| DataDirectory | 连接string的一部分指定MDF文件位于App_Data目录中。

如果您使用代码优先迁移,这可能是相关的。

使用VisualStudio 2013(至less)运行Update-Database命令时,数据目录与当前在Visual Studio中configuration的“启动项目”相对。

即使您在另一个项目上运行更新数据库(在软件包pipe理器控制台上select),它也会在当前选定的启动项目的App_Data上创build数据库。