Я вижу во многих примерах MVC , Repository шаблон, Unit of Work и EF , например здесь , что и интерфейсы, и классы реализуют интерфейс IDisposable
. Я предполагаю, что этот интерфейс предоставляет только метод Dispose()
с двумя перегрузками.
Однако во многих других примерах, сделанных старшими программистами, я не вижу такой реализации. На самом деле мне кажется вполне логичным, что один компонент удаляется при каждом веб-запросе, поскольку каждый запрос получает совершенно новый экземпляр контроллера.
Или даже если это не так, я полагаю, что с помощью фреймворка внедрения зависимостей, такого как Ninject , мы делегируем все эти задачи утилизации самому фреймворку.
Также может случиться так, что реализация IDisposable требовалась в более старой версии платформы EF или MVC.
Кто-нибудь может указать мне правильное направление?
ОБНОВЛЕНИЕ
Автоматическое удаление контекста можно увидеть в многоуровневом приложении со слоем Service и Repository . Предположим, что из обоих компонентов мы возвращаем IQueryable
объектов, если мы попытаемся заполнить объекты из контроллера, перебирая его элементы или вызывая метод ToList()
, мы получим ошибку времени выполнения, говорящую о том, что контекст недоступен (закрыт)