[英]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.