我有这个课我想映射:
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();
其中Right是另一个映射类,它表示两个不同系统具有的某些权限(可以像“ GetPartStockQuantity ”或“ GetOrderStatus ”)。
我遇到的问题是,当我为两个列表中的每一个添加一个权限然后使用NHibernate获取它们时,两个列表都有两个项目(这是我单独添加的两个项目)。
我该如何解决这个问题?
答案 0 :(得分: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();