ADO.NET | DataDirectory |这记录在哪里?

时间:2009-09-11 06:48:23

标签: c# ado.net datadirectory

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

6 个答案:

答案 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属性,则将应用以下默认规则来访问数据库文件夹:

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

答案 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上创建数据库。