NHibernate - 在同一实体中具有相同类型的两个列表

时间:2012-06-20 11:13:02

标签: 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();

其中Right是另一个映射类,它表示两个不同系统具有的某些权限(可以像“ GetPartStockQuantity ”或“ GetOrderStatus ”)。

我遇到的问题是,当我为两个列表中的每一个添加一个权限然后使用NHibernate获取它们时,两个列表都有两个项目(这是我单独添加的两个项目)。

我该如何解决这个问题?

1 个答案:

答案 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();