急切加载自引用表

Jan*_*nda 9 c# entity-framework hierarchical-data

我有一个标准的自我参考表Categories.在我的实体模型中,我已经建立了联想ChildrenParent.是否可以在Category没有延迟加载的情况下加载整个对象?

如果我使用下面的代码,它只加载到第二级.

db.Categories.MergeOption = System.Data.Objects.MergeOption.NoTracking;

var query = from c in db.Categories.Include("Children")
            where c.IsVisible == true
            orderby c.SortOrder, c.Id
            select c;
Run Code Online (Sandbox Code Playgroud)

如果我已经加载了所有类别对象,是否可以加载引用?

加载它的一种方法是Children多次添加属性

db.Categories.Include("Children.Children.Children.Children.Children")
Run Code Online (Sandbox Code Playgroud)

但是这会产生一个非常长的疯狂的T-SQL代码,而且它也没有做我想要的.

Cra*_*ntz 1

不,这是不可能的。考虑:所有 LINQ to Entities 查询都会转换为 SQL。哪个 SQL 语句在自引用层次结构中包含无限深度?在标准 SQL 中,没有这样一个。如果 T-SQL 中有对此的扩展,我不知道它是什么,而且我认为 EF 提供程序也不知道。

  • “哪个 SQL 语句在自引用层次结构中包含无限深度?” -> T-SQL 中的通用表表达式 (3认同)