背景
我有两张表master
和detail
。 detail
中的每一行都包含master
的属性(延迟加载)。
我想将一个detail
的集合与他们的主人一起缓存在如下集合中:
List<Detail> cachedItems = entities.Details.ToList();
foreach (var d in cachedItems)
d.master // throws exception
ObjectContext实例已被释放,不能再用于需要连接的操作。
问题:
如何在不使用其他集合的情况下使用master
对象缓存detail
对象,我更愿意在一次往返中使用它们。
答案 0 :(得分:2)
您可以尝试使用Include功能来塑造查询结果。
答案 1 :(得分:1)
在关闭ObjectContext
之前,您必须明确获取主记录。如果Detail
实体中的导航属性被调用Master
,请将您的数据检索查询修改为:
List<Detail> cachedItems = entities.Details.Include("Master").ToList();
或者在使用Include
扩展方法表格EF 4.1
List<Detail> cachedItems = entities.Details.Include(d => d.Master).ToList();
这将通过一次往返立即加载与主人的详细信息。