我們有一個LINQ從這樣的DB上下文菜單中選擇:獲取從LINQ IEnumerable的選擇
public Category GetCategory(int categoryId)
{
Category result = null;
using (var db = new MyContext())
{
result = (from entry in db.Categories
where entry.CategoryId == categoryId
select entry).FirstOrDefault();
}
return result;
}
我們擔心這會從時間到時間工作,因爲該函數返回IQueryable
和垃圾收集器會殺掉db
(Using
結束於此功能)。
我們如何保持Using
在這個函數中,並返回選中的對象,但是從db
斷開?
究竟什麼是您發佈的代碼問題之前加載導航屬性/集合? –
某些方法將執行的IQueryable,如ToList或FirstOrDefault(如你的例子),一旦發生這種情況,對象存儲在內存中,你可以安全地處理上下文。這種方法似乎是正確的 –
將鼠標懸停在FirstOrDefault()上,我仍然看到對象是IQueryable。 VS 2012錯了嗎? –