实体框架4.1默认急切加载

Sea*_*ean 13 entity-framework eager-loading entity-framework-4.1

我正在使用Entity Framework 4.1代码的第一种方法.

我希望将eager加载作为我的dafault配置,并避免在每个提取查询中使用Include扩展方法.

我在MSDN中建议,在DbContext构造函数中更改简单的lazy属性:

public class EMarketContext : DbContext
{
    public EMarketContext()
    {
        // Change the default lazy loading to eager loading
        this.Configuration.LazyLoadingEnabled = false; 
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这种方法不起作用.我必须使用Include方法在每个查询中执行预先加载.有什么想法吗?提前致谢.

Lad*_*nka 26

预先加载没有默认配置.您必须始终定义Include或创建一些可重用的方法,它将包装添加包含.例如,您可以将类似的方法放在您的上下文中:

public IQueryable<MyEntity> GetMyEntities()
{
    return this.MyEntities.Include(e => e.SomeOtherEntities);
}
Run Code Online (Sandbox Code Playgroud)

  • 但它不会将延迟加载更改为急切加载.它只是关闭延迟加载.急切加载仍然是由'Include`执行的手动操作 (8认同)