当延迟加载和代理为假时,如何递归加载注释表中的n个子元素?

时间:2016-04-24 17:47:41

标签: asp.net-mvc performance entity-framework linq

我想通过Linq查询获取带导航属性的所有注释。我在我的实体中禁用了延迟加载和代理。

public partial class dbCommentEntities : DbContext
{
    public dbCommentEntities()
        : base("name=dbCommentEntities")
    {
        this.Configuration.LazyLoadingEnabled = false;
        this.Configuration.ProxyCreationEnabled = false;

    }
}

我从数据库加载的查询代码是

 var queryTest = (from c in db.Comments
                         where c.ParentId == null
                         orderby c.CommentId descending
                         select new minicomment { 
                            Title = c.Title,
                            CommentId = c.CommentId, 
                            Comments1 = c.Comments1}).Skip(skip).Take(take);      

现在,如果我在dbcontext中启用延迟加载和代理,它对我来说很好。这意味着获得所有级别的导航......

但是这是禁用或启用等于false它只为我加载一个级别。

如何在懒惰和代理为假时获取所有级别导航

谢谢。

1 个答案:

答案 0 :(得分:1)

您必须使用Eager Loading

关于Eager Loading.

的好文章

什么是渴望加载?

  

使用Eager Loading时,会同时加载相关实体   您的目标实体集。您在查询中使用Include语句   指出您要引入的相关实体。

一个例子:

 return (from owner in Catalog.Owners
                        where owner.Key == ownerKey
                         select owner)
                        .Include(o => o.Credits)
                        .Include(o => o.Provider)