1

次の SQL テーブルがあります。

 ObjectTable
--------------------------------------------------
|  ID      |  Name         |  Order  |  ParentID  |
|  int PK  |  nvarchar(50) |  int    |  int FK    |     

ObjectTable.ParentID別のオブジェクト レコードの ID との関係を持つ null 許容フィールドです。LINQ-to-SQL は、次のようなクラスを生成します。

 public class DbObject{

      int ID { get; set; }

      string Name { get; set; }

      int Order { get; set; }

      int? ParentID { get; set; }

      DbObject Parent { get; set; }

      EntitySet<DbObject> ChildObjects { get; set; }

 }

インスタンスをロードするときDbObject、子オブジェクトに再帰的にアクセスできるようにする必要があります。これにより、データを階層的な JSON オブジェクトに書き込むことができます。

  • 経由で要素にアクセスするたびに、別のクエリを実行しますDbObject.ChildObjectsか? DB トランザクションは最も時間がかかるため、これは再帰階層をロードするには非常に非効率的な方法のようです。

  • LINQ-to-SQL や EF を使用して再帰クエリを実行するためのベスト プラクティスは何ですか?

  • LINQ-to-SQL はCommon Table Expressionsと統合されていますか? linq-to-sql で Common Table Expression (CTE)を見つけましたか?

4

1 に答える 1

3

私たちの場合、CTE を使用してストアド プロシージャを作成し、l2s デザイナに配置しました。これらは、プロパティではなくメソッドとして動作することを除いて、他のテーブルと同様に機能し、これまでのところ問題は発生していません。

于 2011-07-06T05:27:21.763 に答える