Я вижу во многих примерах MVC , Репозиторий шаблон, Единица работы и EF , например здесь , что и интерфейсы, и классы реализуют интерфейс IDisposable
. Я предполагаю, что этот интерфейс предоставляет только метод Dispose()
с двумя перегрузками.
Однако во многих других примерах старших программистов я не вижу такой реализации. На самом деле мне кажется вполне логичным, что один компонент отбрасывается при каждом веб-запросе, поскольку каждый запрос получает совершенно новый экземпляр контроллера.
Или, даже если это не так, я думаю, что с помощью инфраструктуры внедрения зависимостей, такой как Ninject , мы делегируем все эти задачи удаления самой структуре.
Может также случиться, что реализация IDisposable требовалась в более старой версии EF или MVC.
Кто-нибудь может указать мне правильное направление?
UPDATE
Автоматическое удаление контекста можно увидеть в многоуровневом приложении с Service и Repository layer. Предположим, что из обоих компонентов мы возвращаем IQueryable<T>
объекты, если мы пытаемся заполнить объекты из контроллера, перебирая его элементы или вызывая метод ToList()
, мы получаем ошибку времени выполнения, сообщающую, что контекст недоступен (закрыт) * 1041 *