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 は別のマップされたクラスで、2 つの異なるシステムが持つ特定の権利を表します (「GetPartStockQuantity」または「GetOrderStatus」のようになります)。

私が抱えている問題は、2 つのリストのそれぞれに 1 つの権利を追加し、NHibernate でそれらを取得すると、両方のリストに 2 つの項目 (個別に追加した 2 つ) があることです。

どうすればこれを解決できますか?

4

1 に答える 1

0

manytoany は両方とも、デフォルトで同じテーブル名と列名になります。それらを明示的に指定する必要があります。

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 に答える