2011-04-14 136 views
4

我在我的控制器的默认构造函数中创建了一个EntityFramework对象。IDisposable ASP.net MVC控制器

要在任何控制器内调用动作方法后释放内存, 我想让控制器一次性使用。这是一个好主意吗?

public somethingController : Controller , IDisposable 
{ 
    // implement the dispose method here 
    public void Dispose() 
    { 
     EntityFrameWorkObject.Dispose(); 
    } 
} 

你觉得呢?

回答

2

我推荐IHttpModule实现处理datacontext对象。我的实际代码与Microsoft统一工作。

public void Init(HttpApplication application) 
{ 
    application.EndRequest += new EventHandler(this.Application_EndRequest); 
} 

private void Application_EndRequest(object source, EventArgs e) 
{ 
    IoCWorker.Resolve<IRepositoryContext>().Terminate(); 
} 
+0

非常感谢你让我在非常重要的一点。我仍然是像微软统一这样的模式的初学者。你有没有其他简单的解决方案,因为我不想重新编码整个应用程序,并通过任何有用的链接,统一书籍? ;) 谢谢 – 2011-04-14 10:21:14

0

是的,这是个好主意。其实这是推荐的模式,通常使用。如果您希望拥有类宽对象,并且想在释放类之后释放其资源,请在Dispose()中执行此操作。

0

是的,那是对的。

public somethingController : Controller 
{ 
    // implement the dispose method here 
    public void Dispose() 
    { 
     EntityFrameWorkObject.Dispose(); 
    } 
} 

您不需要添加IDisposable,因为控制器调用已经实现了它。