2009-10-22 39 views
1

我必须在我的数据库中存储一个树状结构(例如,考虑文件夹)。我选择的模型非常简单:该表具有FolderId(PK,int,identity),一些随机属性和可为空的ParentId(与FolderId相同的表格FK,int,可为空)。SubSonic和Tree表结构

这一切都很好,所有。我使用的是SubSonic的ActiveRecord模板。有什么办法可以让我的生成的文件夹类有父/子属性,而不是简单的“文件夹”?

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

回答

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

行所有生成的类是局部模板,所以你可以做你上面做了什么,而只是创建一个部分的类,因此它都在“相同”类...