2010-02-17 22 views
3

處置LINQ to SQL DataContext有什麼好處?或者,是否存在不處置這些DataContext對象的問題?處置LINQ to SQL DataContext有什麼好處?

例如,對於簡單的編碼,我可能想要做這樣的事情......

var list = from p in (new MyDataContext()).People where p.LastName.Contains("sommar") select p; 

在這種情況下,我已經new'd了一個實例,但不是「關閉」,或處置其以任何方式。它是否還存在可能導致我出現問題的情況?爲了提高賭注,讓我們把它放在一個被稱爲2000次的循環中。 <意大利語:口音>你有問題嗎? < /意大利語:口音>

+0

Duplicate:http://stackoverflow.com/questions/821574/c-linq-to-sql-should-datacontext-be-disposed-using-idisposable – 2010-02-17 21:46:51

回答

2

L2S數據上下文不需要關閉或處置。但是,我不認爲我會想要做你正在做的事情,在循環中新建一個新的2000次。數據上下文是一個重量級的對象,很像主要類固醇上的SQLConnection。我不想在循環中創建2000的開銷。 OTOH,你不希望他們活得太久。

新的一個,做你的工作單位,然後讓框架處置它,或者自己動手。這樣做沒有壞處。

+0

採取的一點。當然這是一個假設情況。所以,你所說的是,新的2000數據上下文唯一的問題是循環運行時性能不佳。沒有內存泄漏或類似的東西? – 2010-02-17 21:52:07

+2

-1爲「重物體」,+1爲「做你的工作單位」。 DataContext被設計和設計爲一次用於一個工作單元。稱它爲重量較大的物體可能會促使人們將其存活的時間超過一個單位的工作時間,從而導致更多的問題。雖然在緊密循環中創建2000可能過多,但在單個數據上下文中執行所有迭代可能不合適 - 特別是如果通過另一個DataContext進行同步異步訪問。 – 2010-02-17 21:54:29

+0

@Byron - 無法評論Context對象是否有內存泄漏。但除非你因技術原因被迫出手,否則我不會在2000年新增一個循環。 – 2010-02-17 22:06:39