我有以下项目解决方案:
有一个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安装路径并在那里查找数据库文件。
答案 0 :(得分:2)
您是否考虑过只在SQL Express中永久附加数据库?这样,您可以在两个项目中使用相同的连接字符串,并且两者都不会绑定到文件系统路径。
答案 1 :(得分:2)
你想要这样的东西(VB .NET代码):
connectionString="Data Source=.\SQLExpress; Integrated Security=true; AttachDbFilename=" & Server.MapPath("~\App_Data\MyDatabase.mdf")
Server.MapPath()将在运行时将您的相对路径转换为完全限定的路径。