2012-07-01 20 views
2

當使用Linq-to-Sql時,Visual Studio會爲您創建一個DataContext類。我想知道什麼時候實例化這個上下文,在我的一個項目中,我使用了一個DataContext實例來處理大約300個CRUD命令(整個項目),它處理了一個稍後我設法解決的小問題,在我最近的項目中,根據CRUD命令創建它的一個實例,現在問題是什麼,使用DataContext的最佳方式是什麼?每個命令一個或每個項目一個?或者每筆交易可能有一筆交易(我認爲這也是一個好主意)? 每種方式的速度和性能有什麼不同?DataContext Scope Best-Practice

回答

4

當你保持打開太短時,會浪費性能,因爲實例化DataContext並不完全免費。它很便宜但可以衡量。它顯示在配置文件中。

當你把它打開過久你的問題太:

  1. 對象開始積累在它
  2. 不能在多個線程或多個事務在同一時間使用也無妨
  3. 如果您的SubmitChanges的一個失敗的一些合乎邏輯的理由,背景是死了,因爲同樣的錯誤將永遠出現,不管你重試多久

這裏有一些規則WHA T優永遠不應該深刻理解做:

  1. 有一個DataContext的多個HTTP的請求/ WCF通話
  2. 有一個DataContext的時間一個無限量(即持續一個桌面應用程序是nunning)
  3. 有跟蹤實體的無限數量的一個DataContext
  4. 使用它跨線程
+0

什麼叫跟蹤實體是什麼意思? –

+0

當你從數據庫中查詢一個實體時,它永遠停留在你的DataContext中。它被跟蹤。 – usr