ADO.NET |数据目录|这是在哪里记录的?

发布于 2024-08-04 09:17:07 字数 64 浏览 5 评论 0原文

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

In AppConfig it is possible to use |DataDirectory| but I can't find any doc ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

岁吢 2024-08-11 09:17:07

|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");

|DataDirectory| is a substitution string so you can configure the location of your database file separately.

So instead of:

SqlConnection c = new SqlConnection (
   @"Data Source=.\SQLDB; AttachDbFilename=C:\MyDB\Database.mdf;Initial Catalog=Master");

you do the following:

// 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");
北凤男飞 2024-08-11 09:17:07

在 MSDN 社交论坛 此 中找到

答案可以在|DataDirectory| (包含在管道符号中)是指示数据库路径的替换字符串。它消除了对完整路径进行硬编码的需要,这会导致几个问题,因为数据库的完整路径可以在不同的地方序列化。 DataDirectory 还可以轻松共享项目和部署应用程序。

例如,

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

您可以使用以下连接字符串,而不是使用 DataDirectory:

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

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

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

In the MSDN social forums this answer can be found

|DataDirectory| (enclosed in pipe symbols) is a substitution string that indicates the path to the database. It eliminates the need to hard-code the full path which leads to several problems as the full path to the database could be serialized in different places. DataDirectory also makes it easy to share a project and also to deploy an application.

For example, instead of having the following connection string:

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

Using DataDirectory, you can have the following connection string:

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

To set the DataDirectory property, call the AppDomain.SetData method. If you do not set the DataDirectory property, the following default rules will be applied to access the database folder:

  • For applications that are put in a folder on the user's computer, the database folder uses the application folder.
  • For applications that are running under ClickOnce, the database folder uses the specific data folder that is created.
乖乖公主 2024-08-11 09:17:07

错误的家伙! |数据目录|指您的实例配置的 mssql\data 目录。

例如,我将 Visual Studio 2012 与 SQL Express 结合使用。 |数据目录|将所有 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 下。

Incorrect guys! The |DataDirectory| refers to the mssql\data directory your instance is configured for.

So for example I am using Visual Studio 2012 inconjunction with SQL Express. |DataDirectory| places all MDF files under C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA where my sql express was installed not my solutions app_data folder.

Also the file is names MVCMovie.Models.MovieDBContext not Movies.mdf as specified in my web.config.

I'm thinking it needs to be configured somewhere in visual studio for it to be placed appropriately under app_data.

假扮的天使 2024-08-11 09:17:07

有一个名为 SqlConnectionHelper 的内部类,它会解析此内容并在需要时创建 MDF。

这是我能找到的关于该类和 |DataDirectory| 的唯一 MS 文档宏: http://msdn.microsoft.com/en-us/library/ aa478948.aspx

There is an internal class called SqlConnectionHelper which parses this and creates the MDF if needed.

Here's the only MS doc I can find about that class and the |DataDirectory| macro: http://msdn.microsoft.com/en-us/library/aa478948.aspx.

青萝楚歌 2024-08-11 09:17:07

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

|数据目录|连接字符串的一部分指定 MDF 文件位于 App_Data 目录中。

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

The |DataDirectory| portion of the connection string specifies that the MDF file is located in the App_Data directory.

古镇旧梦 2024-08-11 09:17:07

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

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

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

This might be relevant if you're using code first migrations.

With VisualStudio 2013 (at least) when running an Update-Database command the data directory is relative from the "Startup Project" currently configured in visual studio.

Even if you run the Update-Database on another project (as selected on the Package Manager Console), it will create your database on the App_Data of the currently selected Startup Project.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文