我一直在編寫'使用'塊,但我想知道如果我可以返回一個IQueryable從以下沒有對象被處置之前我訪問它。當dbContext帶有'using'塊時,如何從Linq返回一個IQueryable到SQL查詢?
public IQueryable<Contact> GetContacts(string clientID)
{
using (dbDataContext db = new dbDataContext())
{
var contacts = from _contacts in db.Contacts
where _contacts.ClientID == clientID
orderby _contacts.LastName ascending
select _contacts;
return contacts;
}
}
難道我簡單地去掉「使用」塊,讓淨管理的對象,或者我可以得到LINQ到早期運行查詢並返回填充對象。
請注意,顯式處理datacontext並不是必須的。無論如何,這是個好問題。 – fearofawhackplanet 2010-09-15 10:59:44
@fearofawhackplanet - 呃,是的。任何一次性物品都應被假定爲**要求**處置,並且應該適當處理IMO。它可以保持一個開放的連接,例如... – 2010-09-15 11:12:31
@Marc:我只是繼續我在幾個博客上閱讀的內容,還有幾乎所有ScottGu和Linq團隊的例子。據我所知,官方微軟的立場是,如果它讓你感覺更好,你可以處置,但它確實不是必需的。請參閱http://leedumond.com/blog/about-disposing-the-datacontext/,以此作爲關於此問題中描述的處置和防禦執行問題的一些討論的示例。 – fearofawhackplanet 2010-09-15 11:38:09