2009-06-06 80 views
0

暴露ID我想優化我的類別模型的樹結構。 Category-model有一個Parent屬性和一個Children-collection。從1:n關係/樹(NH)

我通常這樣做的方式是加載所有類別(聲音不好,但最多100個節點)。然後通過以id爲索引的方式對所有類別進行索引,然後通過parentid類別查找父級,然後手動組裝樹。髒,但非常快。我有的問題是,我不知道如何使用nhibernate從父關係獲取/映射ParentID。

說我有這個映射功能NHibernate:

 References(cat => cat.Parent,"Parent_id") 
      .FetchType.Select() 
      .WithForeignKey("Category_ParentCategory"); 

我的問題則是:我怎樣才能獲得或映射的parentid在給定的類別,而不會從數據庫加載父?

而且,有沒有人有過映射樹的實際經驗,或者試過http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/05/14/how-to-map-a-tree-in-nhibernate.aspx

回答

1

除了映射父對象之外,您還可以將ParentId映射爲屬性。您可能需要將ParentId映射爲只讀,並將邏輯放置在Parent的設置器中以設置ParentId。

但是,這可能不是必需的。如果您在單個ISession中填充樹,那麼每個父只會從數據庫加載一次,並在後續請求中從緩存中檢索。