2014-12-09 6 views
0

Я сделал приложение в MVC 4 для получения отчетов с использованием библиотеки диаграмм javascript, причудливых операторов LINQ (groupBys, select и т. Д.) И JSON (для подачи данных диаграммы источник). Все работает отлично, производительность отличная, и нет ничего, кроме голубого неба ... НО ...Использовать другой DataContext в зависимости от выбора пользователя (вставить datacontext)

Система/приложение, которое оно развертывается в разных странах/местах с различными сайтами и базами данных. Дело в том, что мой клиент должен получать отчеты от всех, некоторых или к одному из этих мест. Предположим, что системы развернуты в LA, NY и TX. Вицепрезидент должен получать отчеты и выбирать в раскрывающемся списке (или что-то еще ...) для получения данных из NY и TX. Позже ему нужны только данные из LA и т. Д. ...

Все БД находятся внутри одной локальной сети, поэтому я использую классы 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; 
    } 

} 

«примере» выше, это просто, чтобы показать то, что я пытаюсь сделать ...

Жду ваших ответов & предложения. Благодарю.

ответ

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; 
    } 
Смежные вопросы