MVC, DbContext и многопоточность

Есть много вопросов по этим предметам в отдельности, и у каждого свое мнение. Может быть, кто-то может дать мне хороший ответ по поводу следующего вопроса.

У меня есть веб-сервис Asp.NET MVC, который использует EntityFramework для доступа к БД. Существует один контроллер, и его экземпляр создается каждый раз, когда пользователь обращается к веб-службе. Каждый запрос быстрый. Он просто получает некоторые данные из БД, изменяет их и затем сохраняет.

Вопрос, конечно, заключается в том, как поддерживать DbContext (поскольку он не является потокобезопасным)? На ctor контроллера я создаю экземпляр DbContext. На Dispose() контроллера я располагаю DbContext.

Я видел в некоторых сообщениях, что не рекомендуется создавать экземпляр для каждого запроса. Не так ли?

Спасибо, Эди.

2 ответа

Решение

DbContext предназначен для реализации с каждым запросом. Он реализует IDisposable, а создание экземпляров является недорогой операцией. Пул подключений к базе данных обрабатывается внутренне.

Дополнительная информация:

Entity Framework и пул соединений

DbContext - это очень легкий объект, и он предназначен для создания для каждой операции (= запрос) и затем удаляется. Под капотом ado.net позаботится о повторном использовании db-соединения из пула соединений.

Другие вопросы по тегам