簡體   English   中英

LINQ to SQL和開放連接

[英]LINQ to SQL and open connections

我一直在數據訪問層中進行以下類型的代碼設置(組成示例)

public static class LoadData
{
  private static SomeDataContext db = new SomeDataContext();

  public static void LoadData(DropDownList ddl)
  {
    (from ls in db.MyLookup
    select ls).OrderBy(ls=>ls.theId).ToList()
    .ForEach(ls=>ddl.Items.Add(new ListItem(ls.theText, ls.theValue.ToString())));
  }
}

DataContext是否“聰明”到足以清理自身,還是應該using語句包裝查詢以確保關閉連接?

您絕對應該至少在訪問數據庫時使用using塊。 數據上下文不會自動為您打開和關閉連接。 您仍然要對自己的資源負責。

如果您需要使用單個連接(相關數據等)多次訪問數據庫,則可能需要使用工作單元模式。

DataContext是否“聰明”到足以自行清理

數據上下文被設計為在較小范圍內使用。 單筆交易。 因此,除非您處置它們並允許對象超出范圍,否則它們不會釋放任何資源。 像這樣在整個應用程序中使用單個上下文將導致大量資源的消耗(包括網絡連接以及內存(托管和非托管))。

您應該為每個LoadData調用創建一個新的數據上下文,並將該上下文包裝在using以確保在每次調用之后將其正確處理。

如注釋中所述,數據上下文也不是線程安全的,因此另一個原因是不要在多個邏輯事務中重用同一上下文。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM