2010-05-31 99 views
0

有一個表A包含實體的通用未版本化數據。還有表B,C,D和特定實體類型的版本化數據。所有這些表都參考表A.NHibernate複雜的一對一映射

任務是添加一個實體類型屬性的映射,例如存儲在表B中的引用表A的指針,並指定實體應該如何獲取的規則從表B基於來自表A的標識符(例如,獲取實體的最新版本)。

它可能與NHibernate?

回答

0

看看Ayende發佈的this。您可以使用每個層次的表或每個子類的表來映射此表。如果您選擇前者,則必須在表A中添加鑑別器列。

0
class TableA 
{ 
    public virtual int Id { get; set; } 

    internal virtual IList<TableB> Bs { get; set; } 
    public virtual TableB LatestB { get { return Bs[0]; } set { Bs.Insert(0, value); } } 
} 

class TableAMap : ClassMap<TableA> 
{ 
    public TableAMap() 
    { 
     HasMany(x => x.Bs) 
      .KeyColumn("a_id") 
      .OrderBy("Version desc"); 
    } 
}