为什么实体正在急切加载?

时间:2015-03-17 14:26:03

标签: c# linq entity-framework lazy-loading dbcontext

我有一个包含多个图层的实体层次结构,其中一个图层包含的对象数量可以达到数十万个。有时我只想要顶级对象,但我发现实体框架正在加载层次结构中的所有

我甚至尝试过明确的延迟加载,但无济于事。

using (var db = new MyEntities())
{
    db.Configuration.ProxyCreationEnabled = true;
    db.Configuration.LazyLoadingEnabled = true;

    var daoDict = (from d in db.stt_dictionary
                   where d.id == dictionaryID && !d.deleted
                   select d).FirstOrDefault();
}

在调试时,如果我单步执行此操作然后将鼠标悬停在daoDict上,我会发现其集合属性(virtual)包含数千个对象。

为什么?

1 个答案:

答案 0 :(得分:8)

使用调试器获取它们将加载它们。调试器没有做任何与常规代码不同的事情。它调用属性的getter,然后执行该操作获取数据。

记录实际执行的数据库查询(通过上下文或通过数据库),以查看实际更改查询的方式时正在提取的数据被执行。