在我的ASP.NET MVC项目中,我使用一个自定义控制器工厂,它实例化一个基于Entity Framework的数据存储库并将其传递给控制器的构造函数。存储库对象实现了IDisposable,但是我应该在哪里调用它的Dispose方法?想到的最直接的方法是覆盖控制器的Dispose方法并在那里进行,但由于存储库被注入控制器而不是在那里创建,因此将它放在控制器中对我来说似乎并不合适。
答案 0 :(得分:0)
在您的存储库中,您应该在using语句中使用Entity Framework数据上下文。这意味着在数据访问完成后,将在上下文中调用Dispose方法,关闭连接。
using(var context = new MyDbContext())
{
//do your data access
}
答案 1 :(得分:0)
我想现在有点晚了,但你是在IControllerFactory的ReleaseController方法中做到的。 看看这个:http://www.jasinskionline.com/technicalwiki/(S(wvw00ibwlzs5na45orv53qyl))/Custom-Controller-Factory-Putting-Controllers-in-an-External-Assembly-ASP-NET-MVC.ashx?AspxAutoDetectCookieSupport=1