私のSQLテーブルは次のようになります。
CREATE TABLE Page (
Id int primary key,
ParentId int, -- refers to Page.Id
Title varchar(255),
Content ntext
)
私の ActiveRecord モデルの次のクラスにマップします。
[ActiveRecord]
public class Page {
[PrimaryKey]
public int Id { get; set; }
[BelongsTo("Parent")]
public virtual Page Parent { get; set; }
[Property]
public string Title { get; set; }
[Property]
public string Content { get; set; }
[HasMany(typeof(Page), "Parent", "Page")]
public IList<Page> Children { get; set; }
}
次のコードを使用して、ActiveRecord を使用してツリーのルートを取得しています。
var rootPages = new SimpleQuery<Page>(@"from Page p where p.Parent is null");
return(rootPages.Execute());
これにより、正しいオブジェクト グラフが得られますが、SQL プロファイラー トレースでは、ツリー内のリーフ以外のノードごとに個別のクエリによって子ページが読み込まれていることが示されます。
ActiveRecord にすべてを前もってロードしてから、("SELECT * FROM Page")
メモリ内オブジェクトをソートして必要な親子関係を与えるにはどうすればよいですか?