Контроллеры, использующие EF, должны включать метод dispose
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
См. Проверка того, что соединения с базой данных не оставлены открытыми
Когда вы используете скаффолдинг MVC,это создает метод утилизации для вас.См. Также Controller.Dispose (Boolean)
Платформа ASP.NET MVC вызывает Dispose, когда запрос завершил обработку.Разработчикам обычно не нужно вызывать Dispose.Если вы производите класс от Controller, а производный класс использует неуправляемую память, управляемые ресурсы операционной системы (например, файлы) или COM-объекты, вам следует реализовать Dispose для очистки этих ресурсов.Вам также следует вызвать метод Dispose базового класса.Метод Dispose оставляет экземпляр Controller в непригодном для использования состоянии.После вызова Dispose вы должны освободить все ссылки на экземпляр Controller, чтобы сборщик мусора мог восстановить память, которую занимал экземпляр Controller.
Для получения дополнительной информации см. Очистка неуправляемых ресурсов и Реализация метода Dispose.