2011-05-18 33 views
3

我們首先使用cEF ode開發ASP.NET web應用程序。什麼/哪裏是創建/處理DBContext請求的最佳位置?我只有一個上下文,並沒有使用任何DI容器。目前我有多個方法來調用每個請求,每個方法創建自己的上下文。我怎麼說,像.. GetContextforRequest()這樣的東西,並將其用於請求並在處理請求時處置它?EF代碼第一個用於web應用程序的DBContext生命週期

在此先感謝

回答

7

What't您在每次請求爲1個上下文的角度來看待的是使用上下文一個很好的方式,在您減少創建它們的開銷。您可以在BeginRequest上創建新的上下文,並將其存儲在HttpContext.Current.Items中,並在EndRequest上處置它。

然後您可以創建一個。 GetContextforRequest()方法來封裝從HttpContext獲取.Current.Items

但是我會建議看看使用DI容器。他們中的大多數都有助手協助創建和處理每個請求的對象。

編輯

具有上下文開了請求期間的好處是,你可以利用第一級緩存。這是在上下文的生命週期中緩存對象的地方。因此,假設你有一個名爲User的表包含一堆用戶,並且你在同一請求中調用context.Set()。ToList()兩次,第一次調用將從數據庫中獲取數據,第二次調用將從一級緩存。

+0

我同意DI部分 – maxlego 2011-05-18 11:27:02

+0

完成請求後,你是否會處理dbcontext? – 2012-07-17 20:08:14

+0

是的,清理資源。 – 2012-07-18 09:48:18

相關問題