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”将生成一个双注册表。