2010-01-15 14 views
0

我有Order類和SubOrder:Order Descendant。現在,Order有.Item和SubOrder(顯然)也有,但是SubOrder需要SubItem在那裏。創建時很容易:在NHibernate自定義實體創建(施工)

Item = new SubItem((ISomeInterface)this); 

,但我怎麼告訴NHibernate的創建子項,而不是項目時負載從數據庫亞目(Session.Get <亞目>(ID))?該項目的類型不在數據庫中(我不需要也不希望它在那裏);它始終是「Order for Item,SubOrder SubItem」。而且,它需要使用(ISomeInterface)SubOrder作爲構造函數參數來創建。

總之,我如何管理NHibernate中的自定義實體創建以實現上述內容?創建SubItem時是否可以引用SubOrder(如果沒有,我可以使用屬性「注入」)?

我大概可以使用IUserType,但它似乎是一種矯枉過正;並且我看不到如何僅將IUserType應用於SubOrder.Item(對於IInterceptor也是如此)。此外,我不知道如何獲得對父訂單的引用,除了使用SubOrder的OnLoad事件並在其中設置SubItem屬性......這很尷尬。

+0

我不明白。 SubItem是否未在NHibernate映射中映射爲Item的子類? – hackerhasid 2010-01-15 15:13:30

+0

是的,它沒有被映射。正如我所說,我不想映射它,因爲這意味着數據庫中的附加字段 - 而這純粹是程序已經可用的靜態信息(Order-> Item,SubOrder-> SubItem)。如果可以的話,我可以繼續使用映射 - 但是我希望不需要額外的字段來克服某些軟件限制。 – queen3 2010-01-15 15:44:48

回答

0

「SubOrder的OnLoad事件並在其中設置SubItem屬性」 - >這裏有一個解決方案。您可以嘗試編寫一個custom ReflectionOptimizer