2009-08-05 21 views
2

nullcableであるparentcategoryid列を持つカテゴリという名前の自己参照テーブルがあります。ADOエンティティ階層自己参照

エンティティデザイナにテーブルを追加すると、この関係のナビゲーションプロパティが2つ作成され、1つのParentCategory(ゼロまたは1 navの小道具)と、もう1つはSubCategories(* many nav prop)という名前になりました。

私は1つ以上の深さに行くときを除いて、すべてがうまく動作します。深いレベルをピックアップしません。

私はすべてのCategory.SubCategoriesを取得しますが、私はサブカテゴリの下にカテゴリを取得しません。

何か不足していますか?私はNHibernateについていたはずだと思うようになった。より深いレベルが怠惰に読み込まれるべきではありませんか?

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

答えて

1

これは、私がSubCategoriesプロパティが動作すると想像する方法です。

レベル1

++レベル2

++レベル2

++ ++レベルレベル1のサブカテゴリプロパティのみレベル2のアイテムを返す3

。レベル3に戻るには、再帰的な方法で、連続するレベル2のアイテムにアクセスします。私はより深いレベルを取得しますが、その後、トップレベルのサブカテゴリを持っていることを削除すると

+0

は、私は私はそこにいくつかのエンティティの魔法があるはずと思ったが、屋私は彼らに自分自身を構築する必要があります、あなたは正しいと思います。 – MvcCmsJon

+0

私は既に再帰的な方法を持っています。問題は、他のカテゴリがエンティティに読み込まれないということです。エンティティを構築するために、より深いノードのクエリに行く必要があると言っていますか? 私が理解していることを確認したいだけです。これは、怠惰になる可能性のあるものでなければならないようです。ここ – MvcCmsJon

+0

は_entities.ContentCategorySet.Includeで( "のサブカテゴリ")Cから私のLINQ リターンですc.ParentCategory == nullの ORDERBY c.Importance、c.TitleがCを選択 。 – MvcCmsJon

1

OK、問題の少なくとも一部は

where c.ParentCategory == null 

です。私は事実の後にそれらをフィルタリングすることができると思います。

関連する問題