Fluent nhibernate Fluent Nhibernate多对多映射方式

Fluent nhibernate Fluent Nhibernate多对多映射方式,fluent-nhibernate,fluent-nhibernate-mapping,Fluent Nhibernate,Fluent Nhibernate Mapping,我有两个班,一个是订单,一个是项目 我想要一个这样的方法 class Order { public virtual IList<Item> GetItems(Order order) { //get items for that order. } } class Item { public virtual IList<Order> GetOrders(Item item) { //get all

我有两个班,一个是订单,一个是项目

我想要一个这样的方法

class Order
{
    public virtual IList<Item> GetItems(Order order)
    {
         //get items for that order.
    }
}
class Item
{
    public virtual IList<Order> GetOrders(Item item)
    {
         //get all the orders in which that items is present.
    }
}
类顺序
{
公共虚拟IList GetItems(订单)
{
//获取该订单的项目。
}
}
类项目
{
公共虚拟IList GetOrders(项目)
{
//获取该项目所在的所有订单。
}
}
是创建这样的方法还是创建属性

     public virtual IList<Item> Items { get; set; }
公共虚拟IList项{get;set;}

我应该如何映射这个是nhibernate???

显然你有一个多对多的关系:一个订单可以有很多项目,一个项目可以属于多个订单。在关系数据库中,您需要用一个单独的表来表示这一点,我想您已经有了这个表——假设这个表名为
OrdersItems

按照中的商店/产品示例,您将在
订单
中创建
项目
属性,并在
项目
中创建
订单
属性:

class Order
{
    public virtual IList<Item> Items { get; protected set; }
}

class Item
{
    public virtual IList<Order> Orders { get; protected set; }
}
类顺序
{
公共虚拟IList项{get;protected set;}
}
类项目
{
公共虚拟IList命令{get;protected set;}
}
以及映射:

public class OrderMap : ClassMap<Order>
{
    public OrderMap()
    {
        HasManyToMany(x => x.Items)
           .Cascade.All()
           .Table("OrdersItems");
    }
}

public class ItemMap : ClassMap<Item>
{
    public ItemMap()
    {
        HasManyToMany(x => x.Orders)
           .Cascade.All()
           .Inverse()
           .Table("OrdersItems");
    }
}
public类OrderMap:ClassMap
{
公共秩序地图()
{
HasManyToMany(x=>x.Items)
.Cascade.All()
.表格(“订单网站”);
}
}
公共类ItemMap:ClassMap
{
公共项目映射()
{
HasManyToMany(x=>x.Orders)
.Cascade.All()
.Inverse()
.表格(“订单网站”);
}
}
I缺少“.Inverse()”,为了将来参考,如果不使用它,表“OrdersItems”将生成一个双注册表。