次の 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)を見つけましたか?