如何从另一个项目中引用APP_Data

时间:2008-12-19 09:56:06

标签: .net asp.net connection-string mdf

我有以下项目解决方案:

  • 有一个ASP.NET MVC Web 我有SQL的应用程序 app_Data目录中的数据库(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类将无法正确转换它)但我想使用某种替代路径来解决它将在Web项目的|DataDirectory|中找到Web.Config,如下所示:

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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

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