我在MVC 4中创建了一个应用程序,使用javascript图表库,花哨的LINQ语句(groupBys,select等)和JSON(用于提供图表数据源)来获取报告。一切都很好,性能很好,只有蓝天......但是......
系统/应用程序部署在具有不同站点和数据库的不同国家/地区。问题是我的客户需要从所有,某些或其中一个位置获取报告。我们假设系统部署在洛杉矶,纽约和德克萨斯州。副总统需要获取报告并在下拉列表(或其他......)中选择以从纽约和德克萨斯州获取数据。后来,他只需要来自洛杉矶的数据,等等......
所有数据库都在一个本地网络中,因此我使用LINQ类来处理不同的数据上下文。所有上下文(和模型)完全相同(所以稍后我可以制作Unions或我想要的任何内容)并且完全由我控制。
我的问题是我如何处理这个问题,将上下文重载到某个控制器/方法但是我该怎么办呢?我一直在寻找一段时间,无法获得解决方案或其他东西进入正轨。
我认为是这样的:
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;
}
}
上面的“例子”只是为了说明我要做的事情......
等待你的回复&建议。感谢。
答案 0 :(得分:0)
一种选择是利用工厂模式。
以下示例是该概念的基本实现。
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;
}