SubSonic和Tree表结构

时间:2009-10-22 01:01:48

标签: subsonic tree

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

这一切都很有效。我正在使用SubSonic的ActiveRecord模板。有没有办法让我生成的Folder类具有Parent / Children属性,而不仅仅是“Folders”?

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

2 个答案:

答案 0 :(得分:1)

我想现在看到明显的为时已晚:我可以简单地按照

的方式做点什么
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;
        }
    }
}

答案 1 :(得分:1)

所有生成的类都是Partials,所以你可以做你上面所做的,但只是为它创建一个局部类,所以它都在“相同”的类中......