2010-11-02 45 views
8

我使用實體框架4和I創建的datacontext爲模型中的基類中的一個。但是我正在分析它,並且每次嘗試查詢時都會創建上下文,所以我想使它成爲static,以便它只創建一次並且總是重複使用。數據上下文應該是靜態的嗎?

你認爲這是做IT和數據/對象上下文應始終進行靜態的最好方法?將它變爲靜態有什麼缺點嗎?數據上下文應該是靜態的還是非靜態的?歡迎任何想法或建議。

+0

有* *地段的問題上SO有關的DataContext和ObjectContext的壽命。 http://stackoverflow.com/search?q=Datacontext+lifetime [在一個Web應用LinqToSql靜態的DataContext](的 – 2010-11-02 19:36:46

+0

可能重複http://stackoverflow.com/questions/940912/linqtosql-static-datacontext-in-a -Web應用程序) – 2010-11-02 19:38:10

回答

9

號他們不應該總是靜態的。

實際上,你可以使用靜態數據上下文,而不是非靜態等效(如訪問從多個線程在同一範圍內單獨的會話多個用戶)更多的問題,運行英寸

我不打算進入詳細說明,因爲有一些很不錯的博客文章在那裏覆蓋的細節:

Linq to SQL DataContext Lifetime Management - Rick Strahl's Web Log(看似不相關,但仍是)

Making Entity Framework (v1) work, Part 1: DataContext Lifetime Management(如果你不喜歡Rick的解決方案,可能會有其他選擇)

5

數據上下文應該總是靜態的嗎?

沒有,他們應該(幾乎*)永遠是靜態的。 DataContext創建起來很便宜,因爲它們旨在用作工作單元。因此,每個「對話」應該有一個DataContext(無論這種情況對您的情況而言意味着什麼)。

*:正確的答案可能是他們不應該是靜態的,但我總是懷疑總是或從不的編程建議。因此,這是一個比任何事情都更偉大的搖擺。