2011-05-18 67 views
12

我正在使用Entity Framework 4.1代码的第一种方法。实体框架4.1默认预先加载

我想作为我的默认配置进行热切加载,并避免在每个获取查询中使用Include扩展方法。

我一样recomended在MSDN,在构造函数中的DbContext改变简单懒属性:

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

不幸的是,这种做法是行不通的。我必须使用Include方法在每个查询中执行预先加载。任何想法为什么? 在此先感谢。

回答

25

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

public IQueryable<MyEntity> GetMyEntities() 
{ 
    return this.MyEntities.Include(e => e.SomeOtherEntities); 
} 
+0

根据ADO.Net开发人员的说法,您错了。检查了这一点:http://blogs.msdn.com/b/adonet/archive/2011/01/31/using-dbcontext-in-ef-feature-ctp5-part-6-loading-related-entities.aspx? CommentPosted = true#commentmessage – Sean 2011-05-18 09:12:24

+0

不,我没有错。我知道这篇文章,并没有任何部分会描述“永久性'包括'” – 2011-05-18 09:22:04

+0

请看(中间):“关闭所有实体的延迟加载”。 – Sean 2011-05-18 09:28:17