2

我有以下项目解决方案:

  • 有一个 ASP.NET MVC Web 应用程序,其中我在 App_Data 目录中有一个 SQL 数据库(mdf 文件)。

  • 有一个类库,我从 migratordotnet进行了一些迁移。在我的构建文件中,我必须指定 SQL 数据库的位置,以便它可以运行迁移。

目前在迁移项目中,我使用硬编码路径来访问连接字符串中的 SQL 数据库。它看起来像这样:

connectionString="Data Source=.\SQLExpress; Integrated Security=true; AttachDbFilename=C:\MySolution\MyMVCProject\App_Data\MyDatabase.mdf"

这不是我想做的。我也不能使用相对路径(例如..\MyMVCPProject\AppData\MyDatabase.mdf因为 migratordotnet 中使用的 SQL 类无法正确翻译它)但我想使用某种替代路径,就像你|DataDirectory|Web.Config在这样的网络项目中:

connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\MyDatabase.mdf;Integrated Security=True;User Instance=True"

我该如何做到这一点?我无法在迁移项目中使用该连接字符串。因为|DataDirectory|将转到 .NET Framework 安装路径并在那里查找数据库文件。

4

2 回答 2

2

您是否考虑过在 SQL Express 中永久附加数据库?这样,您可以在两个项目中使用相同的连接字符串,并且两者都不会绑定到文件系统路径。

于 2008-12-19T10:47:24.670 回答
2

你想要这样的东西(VB .NET 代码):

connectionString="Data Source=.\SQLExpress; Integrated Security=true; AttachDbFilename=" & Server.MapPath("~\App_Data\MyDatabase.mdf")

Server.MapPath() 将在运行时将您的相对路径转换为完全限定的路径。

于 2009-04-01T19:40:31.963 回答