2011-04-14 9 views
4

내 컨트롤러의 기본 생성자에서 EntityFramework 개체를 만듭니다.IDisposable ASP.net MVC 컨트롤러

컨트롤러 내부에서 동작 방법을 호출 한 후 메모리를 확보하려면 컨트롤러를 일회용으로 만들고 싶습니다. 이것은 좋은 생각입니까?

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

어떻게 생각하십니까?

답변

2

dispose datacontext 개체에 IHttpModule 구현을 권장합니다. 내 실제 코드가 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

매우 감사드립니다. 나는 여전히 마이크로 소프트 통합과 같은 패턴의 초보자입니다. 전체 앱을 다시 코딩하고 싶지 않으므로 다른 간단한 솔루션이 있습니까? 그런데 어떤 유용한 링크, 통합을위한 서적이 있습니까? !! ;) 감사합니다. –

0

예, 좋은 생각입니다. 실제로 그것은 권장 패턴이며 일반적으로 사용됩니다. 클래스 와이드 오브젝트를 가져오고 클래스가 해제 된 후 리소스를 해제하려는 경우 Dispose()에서 수행합니다.

0

네, 맞습니다.

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

컨트롤러 호출이 이미 구현되어 있기 때문에 IDisposable을 추가 할 필요가 없습니다.