我们有一个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错了吗? –