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

awj*_*awj 3 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();
}
Run Code Online (Sandbox Code Playgroud)

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

为什么?

Ser*_*rvy 8

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

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