2012-06-20 69 views
1

我有這個類,我要地圖:NHibernate的 - 兩個列表在同一個實體同類型

public class Contract 
{ 
     public virtual IList<Right> RightsSystem1 { get; set; } 
     public virtual IList<Right> RightsSystem2 { get; set; } 
} 

隨着映射:

HasManyToMany(c => c.RightsSystem1).Not.LazyLoad(); 
HasManyToMany(c => c.RightsSystem2).Not.LazyLoad(); 

其中右圖是另外一個映射類,它代表了一定的權利兩個不同的系統(它可以像「GetPartStockQuantity」或「GetOrderStatus」)。

即時通訊的問題是,當我添加一個權利的每個列表,然後讓他們與NHibernate的兩個列表有兩個項目(這是我分別添加的兩個)。

我該如何解決這個問題?

回答

0

這兩個manytomany默認爲相同的表和列名稱。您需要明確指定它們:

HasManyToMany(c => c.RightsSystem1).Table("FooRights").Not.LazyLoad(); 
HasManyToMany(c => c.RightsSystem2).Table("BarRights").Not.LazyLoad(); 

//or 
HasManyToMany(c => c.RightsSystem1).ChildKeyColumn("FooRight_id").Not.LazyLoad(); 
HasManyToMany(c => c.RightsSystem2).ChildKeyColumn("BarRight_id").Not.LazyLoad(); 
相關問題