2009-10-22 25 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

行所有生成的類是局部模板,所以你可以做你上面做了什麼,而只是創建一個部分的類,因此它都在「相同」類...