C# 根据用户选择使用不同的DataContext(注入DataContext)
我在MVC4中制作了一个应用程序,使用javascript图表库、奇特的LINQ语句groupBys、select等获取报告,并使用JSON提供图表数据源。一切都很好,表现很好,除了蓝天。。。但是 系统/应用程序正在不同的国家/地区部署,具有不同的站点和数据库。问题是,我的客户需要从所有、部分或其中一个地点获取报告。让我们假设这些系统部署在洛杉矶、纽约和德克萨斯州。副总统需要获取报告,并在下拉列表中进行选择或其他任何选择。。。从纽约和德克萨斯州获取数据。之后,他只需要从洛杉矶获取数据,等等 所有的数据库都在一个本地网络中,所以我将LINQ类用于不同的数据上下文。所有的上下文和模型都是完全相同的,所以以后我可以创建联合体或任何我想要的东西,并在我的绝对控制之下 我的问题是,我如何处理这个问题,将上下文重载到某个控制器/方法,但我如何才能做到这一点?我已经找了一段时间,但找不到解决方案或什么东西 我的想法是这样的:C# 根据用户选择使用不同的DataContext(注入DataContext),c#,linq,C#,Linq,我在MVC4中制作了一个应用程序,使用javascript图表库、奇特的LINQ语句groupBys、select等获取报告,并使用JSON提供图表数据源。一切都很好,表现很好,除了蓝天。。。但是 系统/应用程序正在不同的国家/地区部署,具有不同的站点和数据库。问题是,我的客户需要从所有、部分或其中一个地点获取报告。让我们假设这些系统部署在洛杉矶、纽约和德克萨斯州。副总统需要获取报告,并在下拉列表中进行选择或其他任何选择。。。从纽约和德克萨斯州获取数据。之后,他只需要从洛杉矶获取数据,等等 所有
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;
}