Subsonic 亚音速和树表结构

Subsonic 亚音速和树表结构,subsonic,tree,Subsonic,Tree,我必须在数据库中存储一个树状结构(比如文件夹)。我选择的模型非常简单:这个表有一个FolderId(PK,int,identity)、一些随机属性和一个可空的ParentId(表FK到FolderId,int,nullable) 一切都很好。我正在使用亚音速的ActiveRecord模板。有没有办法让我生成的文件夹类具有父/子属性,而不是简单的“文件夹” 我怀疑我必须编辑模板,可能是ActiveRecord.tt。如果是这样,有人能给我指出一个起点吗?也许有人做过类似的事情?我想现在已经太晚了,

我必须在数据库中存储一个树状结构(比如文件夹)。我选择的模型非常简单:这个表有一个FolderId(PK,int,identity)、一些随机属性和一个可空的ParentId(表FK到FolderId,int,nullable)

一切都很好。我正在使用亚音速的ActiveRecord模板。有没有办法让我生成的文件夹类具有父/子属性,而不是简单的“文件夹”


我怀疑我必须编辑模板,可能是ActiveRecord.tt。如果是这样,有人能给我指出一个起点吗?也许有人做过类似的事情?

我想现在已经太晚了,看不到显而易见的事情了:我可以简单地按照

partial class Folder
{
    public Folder Parent
    {
        get {
            if (_ParentId.HasValue)
            {
                var repo = ACME.Folder.GetRepo();
                return
                    (from items in repo.GetAll()
                     where _ParentId.Value == items._FolderId
                     select items).First();
            }
            else 
                return null;
        }
    }

    public IQueryable<Folder> Children
    {
        get {
            var repo = ACME.Folder.GetRepo();
            return from items in repo.GetAll()
                   where _FolderId == items.ParentId
                   select items;
        }
    }
}
部分类文件夹
{
公用文件夹父文件夹
{
得到{
if(_ParentId.HasValue)
{
var repo=ACME.Folder.GetRepo();
返回
(来自repo.GetAll()中的项目)
其中_ParentId.Value==items.\u FolderId
选择项目);
}
其他的
返回null;
}
}
公共教育和可教育儿童
{
得到{
var repo=ACME.Folder.GetRepo();
从repo.GetAll()中的项目返回
其中_FolderId==items.ParentId
选择项目;
}
}
}

所有生成的类都是部分类,因此您可以执行上面所做的操作,但只需为其创建一个部分类,使其全部位于“同一”类中