ASP.NET 核心 UI 具有单独数据 .dll 的应用程序

ASP.NET Core UI App with separate data .dll

我正在将应用程序的 UI 端移动到新的 ASP.NET 核心 MVC 结构。不幸的是,我仍然需要引用在上一代 ASP.NET 框架中构建的数据层。此数据 .dll 具有连接到各种数据库的适当连接字符串,这些数据库均由 ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString 管理,这需要我在 UI 层中进行模仿才能实际获取数据。

现在,使用 ASP.NET Core MVC,配置的 web.config 已替换为 appsettings.json 文件。

这种模式转变中断了我对数据的所有访问,因为我无法再在 UI 应用程序中复制连接字符串。

是否有适当的解决方案可以使此数据层 .dll 更加独立并依赖于它自己的内部定义的连接字符串,同时仍然将方法公开给 "containing" 应用程序 -在这种情况下,UI层?

实际上您确实从新的 .json 文件中引用了您的连接字符串。你会做这样的事情:

var builder = new ConfigurationBuilder();
builder.AddInMemoryCollection();
var config = builder.Build();
config["somekey"] = "somevalue";

// do some other work

var setting = config["somekey"]; // also returns "somevalue"

这是一个link:docs.asp.net

我已经通过变通方法解决了我的问题,现在就可以了。最终,我想找到一个更好的选择,但我正在前进,这让我的老板很高兴。

我最终更改了我的方法签名以接受一个字符串值,该字符串值表示由于转换为 Core MVC 而不再存在于调用项目中的连接字符串。

在调用的 .dll 中,代码现在查看传递的参数是否有值,如果有,则使用传递的值初始化 SqlConnection。如果未提供参数,它将使用 ConfigurationManager 功能查看 web.config 中的配置部分。

这将允许现有项目以及新的 Core MVC 项目使用代码。有点笨拙,但很实用。