Как правильно расположить репозиторий, созданный на фабрике пользовательских контроллеров?
В моем проекте ASP.NET MVC я использую фабрику пользовательских контроллеров, которая создает экземпляр хранилища данных на основе Entity Framework и передает его конструктору контроллера. Объект репозитория реализует IDisposable, но где я должен вызвать его метод Dispose? Самый простой подход, который приходит на ум, это переопределить метод Dispose контроллера и сделать это там, но поскольку хранилище было введено в контроллер, а не создано там, удаление его в контроллере не кажется мне правильным.
2 ответа
В вашем репозитории вы должны использовать контексты данных Entity Framework внутри оператора using. Это означает, что после завершения доступа к данным в контексте будет вызван метод Dispose, закрывающий соединение.
using(var context = new MyDbContext())
{
//do your data access
}
Я думаю, что уже немного поздно, но вы делаете это в методе ReleaseController вашей IControllerFactory. Взгляните на это: http://www.jasinskionline.com/technicalwiki/(S(wvw00ibwlzs5na45orv53qyl))/Custom-Controller-Factory-Putting-Controllers-in-an-External-Assembly-ASP-NET-MVC.ashx?AspxAutoDetectCookieSupport=1