C# 根据用户选择使用不同的DataContext(注入DataContext)

C# 根据用户选择使用不同的DataContext(注入DataContext),c#,linq,C#,Linq,我在MVC4中制作了一个应用程序,使用javascript图表库、奇特的LINQ语句groupBys、select等获取报告,并使用JSON提供图表数据源。一切都很好,表现很好,除了蓝天。。。但是 系统/应用程序正在不同的国家/地区部署,具有不同的站点和数据库。问题是,我的客户需要从所有、部分或其中一个地点获取报告。让我们假设这些系统部署在洛杉矶、纽约和德克萨斯州。副总统需要获取报告,并在下拉列表中进行选择或其他任何选择。。。从纽约和德克萨斯州获取数据。之后,他只需要从洛杉矶获取数据,等等 所有

我在MVC4中制作了一个应用程序,使用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;
    }