2016-09-07 42 views
-2

我正在将应用程序的UI侧移至新的ASP.NET Core MVC结构。不幸的是,我仍然需要引用在前一代ASP.NET框架中构建的数据层。该数据.dll具有适当的连接字符串到各种数据库,都由ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString管理,这要求我模仿UI层以便实际获取数据。具有单独数据的ASP.NET核心UI应用程序.dll

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

由于我无法在UI应用程序中复制连接字符串,因此这种范式转换打破了我对数据的所有访问。

是否有一个合适的解决方案,可以使此数据层.dll更独立,并依赖于自己的内部定义的连接字符串,同时仍然将方法暴露给“包含”应用程序 - 在这种情况下,UI层?

回答

0

我已经解决了我的一个变通的问题,它会为现在要做的。最终,我想找到一个更好的选择,但我正在向前迈进,这让我的老板感到开心。

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

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

这将允许现有项目使用代码以及新的Core MVC项目。这有点夸张,但功能。

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

+0

是的,我在文档中看到,我想试试 - 希望在旧的语法和新的语法之间会有一个“automagic”转换。不幸的是,没有这样的幸运......数据层.dll仍然在寻找旧的ConfigurationManager的东西。 – rcastagna

+0

您有权访问.dll的源代码吗?我的想法是,.dll项目应该包含一个app.config文件。那么当你在其他项目中使用它时,它会在其配置文件中查找相同的设置。那么,如果新项目没有使用配置文件进行设置,那并不意味着你不能添加一个配置文件(app.config或web.config),这可能会满足这个需求。 DLL。试试吧......让我知道你的结果。 –

相关问题