我正在将应用程序的UI端移动到新的ASP.NET Core MVC结构。不幸的是,我仍然需要引用在上一代ASP.NET框架中构建的数据层。这个数据.dll具有到ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString
管理的各种数据库的适当连接字符串,这要求我模仿UI层以实际获取数据。
现在,使用ASP.NET Core MVC,配置的web.config
已替换为appsettings.json
文件。
这种范式转换打破了我对数据的所有访问权限,因为我无法再在UI应用程序中复制连接字符串。
是否有适当的解决方案可以使这个数据层.dll更加自包含并依赖于自己的内部定义的连接字符串,同时仍然将方法暴露给包含"包含"应用程序 - 在这种情况下,UI层?
答案 0 :(得分:1)
实际上你确实引用了新的.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"
这是一个链接:docs.asp.net
答案 1 :(得分:0)
我已经通过解决方案解决了我的问题,现在就可以了。最终,我想找到一个更好的选择,但我正在前进,这让我的老板感到高兴。
我最后更改了我的方法签名,以接受一个字符串值,表示由于转换为Core MVC而不再在调用项目中的连接字符串。
在被调用的.dll中,代码现在查看传递的参数是否有值,如果是,则使用传递的值初始化SqlConnection
。如果未提供参数,则会使用web.config
功能查看ConfigurationManager
中的配置部分。
这将允许现有项目使用代码以及新的Core MVC项目。它有点笨拙,但功能齐全。