0

Как я могу использовать такое же соединение для двух запросов в EF, например, я написал этот код в контроллере MVC:Использование одного соединения для объекта Context в EF

DataLayer.Context context = new DataLayer.Context(); 

    [ChildActionOnly] 
    public int TodayVisits() 
    { 
     return Repository.VisitsRepository.TodayVisits(context); 
    } 

    [ChildActionOnly] 
    public int LastMonthVisits() 
    { 
     return Repository.VisitsRepository.LastMonthVisits(context); 
    } 

Я проверка вывода T-SQL с приложение, и это показывает мне, что соединение было открыто 2 раза.

+0

Эти две функции выполняются в одном и том же действии MVC? Как вы их называете? –

+0

TodayVisits и LastMonthVisits - это действия в одном контроллере, и у меня есть объект контекста в этом контроллере, и я назвал его контекстом –

ответ

1

Для каждого запроса из вашего браузера a controller instance will be created .. Таким образом, он также создаст новый контекст для каждого запроса. И прочитайте это тоже, What is the 'page lifecycle' of an ASP.NET MVC page.

Далее, создание экземпляра DbContext для каждого запроса - common practice for entity framework.

Edit ..
Если вам нужно обработать соединение, которое необходимо пройти соединение с конструктором DbContext и установить contextOwnsConnection = ложное. См. documentation и попробуйте его. Подробнее здесь .. DbContext won't keep connection open for re-use

+0

Как видите, у меня есть 2 метода, которые являются ChildActionOnly. Я хочу использовать однократно открытое соединение в каждом запросе, я вызываю эти действия в одном запросе, но я контролировал два открытых соединения. –

+0

Я отредактировал ответ. –