1

我有这个类,我想映射:

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 获取它们时,两个列表都有两个项目(这是我单独添加的两个项目)。

我该如何解决这个问题?

4

1 回答 1

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();
于 2012-06-21T05:43:24.913 回答