ADO实体分层自引用

时间:2009-08-05 07:23:39

标签: entity-framework ado.net entity

我有一个名为categories的自引用表,其中有一个可以为空的parentcategoryid列。

当我将表添加到实体设计器时,它为此关系创建了两个导航属性,我命名了一个ParentCategory(零或1个导航道具),另一个命名为SubCategories(* many nav prop)。

一切都很有效,除非我超过一个级别,它不会提升到更深层次。

所以我得到了所有的Category.SubCategories但我没有得到子类别下的类别。

我错过了什么吗?开始认为我应该坚持使用NHibernate。不应该更深层次加载延迟?

    return from c in _entities.ContentCategorySet.Include("SubCategories")       
           where c.ParentCategory == null
           orderby c.Importance, c.Title
           select c;

3 个答案:

答案 0 :(得分:1)

这就是我想象SubCategories属性的行为方式。

等级1

++ Level 2

++ Level 2

++ ++ Level 3

Level 1的SubCategories属性仅返回Level 2项目。然后,为了达到3级,您将以递归方式访问连续的2级项目。

答案 1 :(得分:1)

好的,至少部分问题是

where c.ParentCategory == null

当我删除它时,我获得更深层次但后面的子类别在顶层。我想我可以在事后过滤掉它们。

答案 2 :(得分:0)