2017-01-10 23 views
1
namespace MyMain.Controllers 
{ 
    public class Home 
    { 
     **//Open First Db Connection Here** 
     public MyDbConEntities db = new MyDbConEntities(); 

     public ActionResult Index() 
     { 
      var user = db.User.FirstOrDefault(); 

      **//Open second Db Connection Here** 

      using (var myTask = new MyTask1()) 
      { 
       myTask.Execute(user.Id); 
      } 
     } 
    } 
} 

namespace MyMain.Task 
{ 
    private MyDbConEntities db = new MyDbConEntities(); 
    public class MyTask1 : IDisposible 
    { 
     private int Id; 
     public MyTask1(int id) 
     { 
      db = new MyDbConEntities(); 
      Id = id; 
     } 

     public void Execute() 
     { 
      **//Open thidr Db Connection Here** 
      using (var mySubTask = new MySubTask1()) 
      { 
       mySubTask.Execute(Id); 
      } 

      db.UserDetails.FirsOrDefault(x => x.UserId = Id) 
     } 

     public Dispose() 
     { 
      db.Dispose(); 
     } 

    } 
} 

Привет, мой вопрос об этом Open Multiple DbCon в то же время.Несколько объектов DbCon

В приведенном выше коде я попытался показать свою идею. Моя цель состоит в том, чтобы на каждом отдельном классе задач открывался DbCon. Но иногда я вызываю одну задачу из другого класса задачи.

Поэтому иногда в течение короткого времени можно открыть несколько dbCon. Я не хочу отправлять объект MyMain/Home Class db в качестве экземпляра для класса задач. Я думал об ошибке обработки дела. Например, когда ошибка произошла в MySubTask1 (если я использую объект db как экземпляр, dbCon может быть закрыт, и вся система может быть сбой.

Итак, я пытаюсь реализовать это ... Что вы думаете о моих идеях?

можете ли вы дать мне ключ ?. Этот метод может быть проблема на сервере для огромной базы данных и пользователей.

Что собирается использовать UnitOfWork с этим методам?

+0

лет u может с UnitOfWork передать ваш DbContext для лучшей производительности. реализация Контекст на шаблон запроса –

+0

Что вы сказали так ясно? Я понимаю, что эта единица работы может быть использована. Кроме того, мои идеи не будут создавать проблемы, когда я опубликую как выпуск на сервере? Поэтому я могу открыть несколько dbcon одновременно. Не так ли? Большое спасибо за ваш интерес. –

+0

почему вы хотите сделать эту работу? –

ответ

0

в конструкции N-Тир-приложения на основе на EF Не распространено то, что в каждом классе и методе, который мы хотим использовать, он создает экземпляры DbContext.

Таким образом, Устранена возможность выполнения различных задач во время транзакции.

для решения этой задачи Используйте контекста для каждого запроса шаблона или UnitOfWork, Делая это Share Instans контекста в различных слоях.

Важность Модель Единицы работы и делиться ею во время разговора

A) Лучше производительность

B) параллелизм вопросы

C) Правильный использование сделок