2

요청 당 하나의 ObjectContext를 사용하는 것이 좋습니다. 이 객체는 수명이 짧아야하며 인스턴스화에 비용이 많이 드는 것은 아니지만 요청 당 하나의 인스턴스에서이 케이스가 매력적이라고 ​​읽습니까? 그렇다면 제대로 구현 한 패턴이 있습니까?ASP.NET의 요청 당 Entity Framework 개체 컨텍스트?

+1

짧은 대답 : 예. 자세한 내용 (패턴 ...) :이 webforms 또는 MVC입니까? – ken2k

+0

위대한! 그것의 webforms – kfc

답변

5

예 HttpRequest마다 수명이있는 ObjectContext/DbContext를 허용하는 방식입니다. Here's a sample 다른 답변을 제공했습니다.

그러나 평생 유지 관리를 IoC 라이브러리에 두는 것이 좋습니다. 유명한 것은 Castle Windsor, Autofac입니다.

업데이트 :
이 상황을 처리하려면 Global.asax에에 Application_EndRequest 방법을 사용할 수 있습니다. 다음 코드는 테스트되지 않았지만 아이디어를 얻을 수 있습니다.

protected virtual void Application_EndRequest() 
{ 
    var key = "MyDb_" + HttpContext.Current.GetHashCode().ToString("x") 
         + Thread.CurrentContext.ContextID.ToString(); 
    var context = HttpContext.Current.Items[key] as MyDbContext; 

    if (context != null) 
    { 
     context.Dispose(); 
    } 
} 
+0

그것은 webforms와 IOC를 사용하는 약간 복잡한 것 같습니다. 작은 응용 프로그램을 가지고 있기 때문에 필자가 지적한 예제에서 제안한 솔루션을 사용할 것입니다. 그래서 지금 요청이 처리되면 Context 객체의 요청을 처리하도록 강제하는 방법이 있습니까? – kfc

+0

@kfc가 내 대답을 업데이트했습니다. – Kamyar

관련 문제