1

私は C# ASP.NET を使用しており、アプリケーション全体で再帰を使用する必要があります。私は現在、Linq to Entities を使用しており、オンラインで広範囲に検索しましたが、再帰クエリを実行するエレガントな方法を見つけることができませんでした。再帰が何レベルになるかわかりません。

4

2 に答える 2

1

同様の問題を解決する必要があり、データソースを繰り返し処理して、すべての項目を順番に含むIEnumerableを返すヘルパー関数を作成することになりました。ただし、私の場合、データソースは線形でした。あなたのものがよりツリー構造であり、階層的に表示されなければならない場合、これは実際には機能しません。

于 2012-05-23T01:25:02.510 に答える
0

あなたが抱えている正確な問題はわかりませんし、他の ORM が何をしているのかもわかりません。

NHibernate はほとんどの問題を簡単に解決できると思います。

  • 遅延読み込みを使用する: 子は遅延読み込みされます。SQL では不可能な再帰クエリのようなものは必要ありません。
  • 遅延読み込みによるナビゲーションは双方向で機能します。したがって、単純なクエリを使用してデータベースからノードを取得し、その親に移動できます。
  • 多くの場合、再帰グラフに冗長性を追加することは理にかなっています。たとえば、ルート ノードへの参照。これにより、条件に一致するノードが少なくとも 1 つあるツリーへのクエリが可能になります。またはノードの深さ (ルートまでの距離)。または子ノードの数など。クエリに必要なものは何でも。
于 2012-05-23T06:13:50.743 に答える