缓存EF域对象:本ObjectContext的实例已被释放,并且可以不再被用于需要连接的操作(Cac

2019-10-18 20:38发布

我知道这个异常是由一些特性造成被定义为virtual ,因此它试图上下文已被释放后,懒洋洋地加载它们。

不过,我不希望加载整个对象图只是执行一个非常简单的查询。 如果我尝试缓存对象时的背景下还活着,它会尝试加载懒洋洋的一切,并大大减缓下来。

有没有进行查询,然后得到一个断开的结果集,所以它不会尝试加载懒洋洋的事情,我不希望它的方法吗? 或者只是把延迟加载的特定查询?

下面是我使用的代码:

return _cacheHelper.CacheGetOrInsert(CenterCacheKey, "tariffs", () => {
    using (var context = GetContext()) {
        return context.Tariffs
            .Include("Rates")
            .Include("Rates.Tiers")
            .Include("Rates.Tiers.Discounts")
            .Include("Discounts")
            .Include("Discounts.Regions")
            .ToList();
    }
});

编辑

啊,刚发现context.Configuration.LazyLoadingEnabled = false; 这似乎工作。

文章来源: Caching EF domain objects: The ObjectContext instance has been disposed and can no longer be used for operations that require a connection