C# ASP.NET核心UI应用程序与单独的data.dll

C# ASP.NET核心UI应用程序与单独的data.dll,c#,dll,asp.net-core,asp.net-core-mvc,sqlconnection,C#,Dll,Asp.net Core,Asp.net Core Mvc,Sqlconnection,我正在将应用程序的UI端移动到新的ASP.NET核心MVC结构。不幸的是,我仍然需要引用上一代ASP.NET框架中构建的数据层。此data.dll具有到各种数据库的适当连接字符串,所有这些数据库都由ConfigurationManager.ConnectionString[“ConnectionStringName”]。ConnectionString管理,这要求我在UI层中进行模拟,以便实际获取数据 现在,使用ASP.NET核心MVC,用于配置的web.config已被appsettings.

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

现在,使用ASP.NET核心MVC,用于配置的
web.config
已被
appsettings.json
文件替换

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


是否有一个合适的解决方案可以使这个数据层.dll更加独立,并且依赖于它自己的内部定义的连接字符串,同时仍然向“包含”应用程序(在本例中为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"

这里有一个链接:

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

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

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


这将允许现有项目使用该代码,以及新的核心MVC项目。这有点笨拙,但功能性很强。

是的,我在文档中看到了这一点,我想尝试一下——希望在旧语法和新语法之间有一个“自动逻辑”翻译。不幸的是,没有这样的运气…data layer.dll仍在寻找旧的ConfigurationManager内容。您有权访问.dll的源代码吗?我的想法是.dll项目应该包含一个app.config文件。因此,当您在其他项目中使用它时,它会在其配置文件中查找相同的设置。因此,如果新项目不使用配置文件进行设置,并不意味着不能添加配置文件(app.config或web.config),这可能满足.dll所需的要求。试试看。。。让我知道你的结果。