2012-06-20 96 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(); 
相关问题