.net - 如何从另一个项目引用 APP_Data

标签 .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 项目的 Web.Config 中使用 |DataDirectory| 找到的内容,如下所示:

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

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

最佳答案

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

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

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

关于.net - 如何从另一个项目引用 APP_Data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/380549/

相关文章:

c# - 如何在另一台 PC 上部署具有数据库的 C# Windows 窗体应用程序?

.net - 互操作:无法调用 get_Range,也无法使用 Range().Value2 返回的二维对象数组?

.net - 为什么元组的项目是只读的?

c# - switch语句是如何执行的?

c# - asp.net向导控件不可点击侧边栏

ASP.NET Processmodel 配置优化

.Net Core 主机进程 Windows 2016 IIS 中的高 CPU 使用率在 Asp.Net Core 2.2 应用程序中

c# - 如何清除浏览器历史记录或清除缓存?

Mysql utf8mb4 连接字符串(Node.js、serverless-mysql 包)

asp.net - 配置 ASP.NET 开发服务器以连接到 postgres 数据库