2

null許容のparentcategoryid列を持つcategoriesという名前の自己参照テーブルがあります。

テーブルをエンティティデザイナーに追加すると、この関係に2つのナビゲーションプロパティが作成され、1つはParentCategory(0または1 navプロップ)、もう1つはSubCategories(*多くのnavプロップ)という名前が付けられました。

私が複数のレベルを深くするとき、それがより深いレベルを拾わないことを除いて、すべてがうまく機能します。

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

私は何かが足りないのですか?私はNHibernateに固執するべきだったと思い始めました。より深いレベルを遅延ロードするべきではありませんか?

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

2 に答える 2

1

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

where c.ParentCategory == null

それを削除すると、より深いレベルになりますが、最上位にサブカテゴリがあります。事後にそれらを除外することができると思います。

于 2009-08-05T08:13:09.950 に答える
1

それが、SubCategories プロパティの動作を想像する方法です。

レベル1

++ レベル 2

++ レベル 2

++ ++ レベル 3

レベル 1 の SubCategories プロパティは、レベル 2 のアイテムのみを返します。次に、レベル 3 に到達するには、再帰的な方法で、連続するレベル 2 の項目にアクセスします。

于 2009-08-05T07:28:10.870 に答える