我正在努力解決以下問題。長時間使用實體時在C#中使用EntityFramework
我有一個數據庫與表作業,其中包含有關工作要完成的信息。我遵循EF 6.0的Code First方法並創建了一個名爲Job的POCO類Job。然後我在數據庫中查詢喬布斯:
DbSet<Job> receivedJobs;
using (var context = new MyContext())
{
receivedJobs = (from j in context.Jobs
select j);
}
與接收到的設置receivedJobs我會再做一個耗時的優化。
據我所知,上下文的生命週期以及上下文控制的資源以using語句的右括號結束。另外一個好的設計應該在資源不再需要時立即將資源釋放。
我的問題是現在我應該怎麼做我的情況?只要保持數據庫上下文一直存在,直到完成耗時的優化任務。或者關閉連接,因爲直到優化結束才需要它。但在後一種情況下,我如何處理對象,因爲我將需要訪問它們的一些導航屬性,而我不能因爲上下文已關閉而導致它們的導航屬性。 (順便說一下,類的實例中的數據不會因優化而改變,因此不需要跟蹤這些對象的更改,因爲不會有這些對象的更改)
希望有人可以幫助我理解這種情況下推薦的設計。
問候
謝謝你的建議。我忘了提及以下事情,我剛剛添加到我原來的帖子後,你回答我的問題。 「順便說一下,Job類實例中的數據不會因優化而改變,因此不需要跟蹤這些對象的更改,因爲不會有任何」 此外,優化可以涉及用戶行爲。 即使在這種情況下,我應該保持連接打開(可能會有一段時間)? – user2653422