0

我们有一个来自 DB 上下文的 LINQ 选择,如下所示:

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

4

1 回答 1

3

返回什么函数IQueryable<T>?您的代码不返回,而是返回 null 或 -调用结果的IQueryable<T>实例。的实例将在您的处置后正常工作。Category.FirstOrDefault()CategoryDbContext

也许您的问题与导航属性的延迟加载有关?那会在using街区外轰炸。您应该禁用延迟加载和/或代理生成以避免这种情况,或者在退出using块之前显式加载导航属性/集合

于 2013-11-02T00:49:24.350 回答