2

每個請求使用單個ObjectContext是否被認爲是一種很好的做法?我讀這些對象應該是短暫的,並且實例化並不是非常昂貴,但是這會使每個請求對其中的一個案例有吸引力嗎?如果是的話,有沒有適當的實施這種模式?ASP.NET中每個請求的實體框架對象上下文?

+1

簡短的回答:是的。更多細節(模式...):這是webforms還是MVC? – ken2k 2013-05-14 13:05:28

+0

太棒了!它的webforms – kfc 2013-05-14 13:09:16

回答

5

是的,這是一個可接受的方法來使ObjectContext/DbContext具有每個HttpRequest的生命週期。 Here's a sample我在另一個答案中提供了。

Hoewever,最好將這些生命週期管理留給IoC庫。着名的是Castle Windsor,Autofac

更新:
要處理你的情況下,你可以使用Application_EndRequest方法Global.asax中。下面的代碼沒有測試,但你會得到這個想法:

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 2013-05-15 09:48:01

+0

@kfc更新了我的答案。 – Kamyar 2013-05-15 09:58:09

相關問題