0

Context對象一個連接我如何使用兩個查詢在同一EF連接,例如我寫了這個代碼在MVC控制器:使用在EF

DataLayer.Context context = new DataLayer.Context(); 

    [ChildActionOnly] 
    public int TodayVisits() 
    { 
     return Repository.VisitsRepository.TodayVisits(context); 
    } 

    [ChildActionOnly] 
    public int LastMonthVisits() 
    { 
     return Repository.VisitsRepository.LastMonthVisits(context); 
    } 

我檢查輸出T-SQL與應用程序,它顯示了連接2時間已打開。

+0

這兩個功能在相同的MVC行動中執行嗎?你怎麼稱呼他們? –

+0

TodayVisits和LastMonthVisits是同一個控制器中的操作,我在這個控制器中有一個上下文對象,我將其命名爲context –

回答

1

對於來自瀏覽器的每個請求,一個controller instance will be created ..所以它也會爲每個請求創建新的上下文。 也讀這個,What is the 'page lifecycle' of an ASP.NET MVC page

更多爲每個請求創建DbContext的實例是common practice for entity framework

編輯..
如果你需要處理你需要傳遞到的DbContext構造連接的連接和設置contextOwnsConnection =假。看到documentation並嘗試.. 更多在這裏.. DbContext won't keep connection open for re-use

+0

正如你看到的,我有2個方法是ChildActionOnly。我想在每個請求中使用一次打開的連接,我在相同請求中調用這些操作,但我監視了兩個打開的連接。 –

+0

我編輯了答案。 –