当我在搜索“DbSet<T>.Where(predicate)
这样的”列表“时,我可以添加.Include("xxx")
,但这不适用于单个对象。
在调用virtual
Icollection<T>
DbSet<T>.Find(id)
属性
答案 0 :(得分:5)
使用当前的API,您无法使用Find方法进行急切加载:
来自P erformance Considerations for Entity Framework 5
使用Find方法时需要考虑的是:
...
另外,请记住查找仅返回您正在查找的实体 for,它不会自动加载其关联实体 if 它们尚未存在于对象缓存中。如果你需要检索 关联实体,您可以按键使用急切加载查询。
所以你最接近的就是使用SingleOrDefault
dbSet.Include("xxx").SingleOrDefault(i => i.Id == id)
或者您可以在查找后明确load the related entities:
using (var context = new Db())
{
var entity = context.SomeSet.Find(id);
context.Entry(entity).Collection(p => p.SomeCollection).Load();
}