根据用户选择使用不同的数据上下文(注入数据上下文)
本文关键字:上下文 数据 注入 用户 选择 | 更新日期: 2023-09-27 18:33:40
我在MVC 4中制作了一个应用程序,使用javascript图表库,花哨的LINQ语句(groupBys,select等(和JSON(提供图表数据源(来获取报告。一切都很好,性能很棒,除了蓝天什么都没有......但。。。
它部署在具有不同站点和数据库的不同国家/位置的系统/应用程序。问题是我的客户需要从所有、部分或其中一个位置获取报告。假设系统部署在洛杉矶、纽约和德克萨斯州。副总统需要获取报告并在下拉列表中选择(或其他什么(以从纽约和德克萨斯州获取数据。后来,他只需要来自洛杉矶的数据,等等......
所有数据库都位于一个本地网络中,因此我将 LINQ 类用于不同的数据上下文。所有上下文(和模型(都是完全相同的(所以以后我可以制作联盟或任何我想要的东西(,并且在我的绝对控制之下。
我的问题是我如何处理这个问题,将上下文重载到某个控制器/方法,但我该怎么做?我一直在寻找一段时间,但无法找到解决方案或进入正轨的东西。
我认为是这样的:
public JsonResult GetData(string? location){
switch(location){
case "NY":
var data = GetMeReportData("NY"); //The idea is that NY calls the NY DataContext inside this method
break;
case "LA":
var data = GetMetReportData("TX"); //And so on...
break;
}
}
上面的"示例"只是为了说明我正在尝试做什么......
等待您的回复和建议。谢谢。
一种选择是利用工厂模式。
以下示例是该概念的基本实现。
public static MyContext CreateContext(string location)
{
MyContext result = null;
string databaseName = string.Empty;
switch(location)
{
case "NY":
databaseName = "NyDb";
break;
case "LA":
databaseName = "LaDb";
break;
}
var connectionName = "Name=" + databaseName;
result = new MyContext(connectionName);
return result;
}