我的 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 Profiler 跟踪显示,子页面正在由树中每个非叶节点的单独查询加载。
如何让 ActiveRecord 预先加载全部内容("SELECT * FROM Page")
,然后对内存中的对象进行排序以提供所需的父子关系?