我有两个类Order和Items
我想要一个像这样的方法
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.
}
}
是否写入创建这样的方法,或者我应该创建属性
public virtual IList<Item> Items { get; set; }
我应该怎么做这个映射是nhibernate ??
答案 0 :(得分:32)
显然,您有多对多的关系:订单可以包含多个商品,而商品可以属于多个订单。在关系数据库中,你需要用一个我认为你拥有的单独表来表达它 - 让我们假设这个表叫做OrdersItems
。
根据Fluent NHibernate documentation中的商店/产品示例,您将在Items
中创建Order
属性,在Orders
中创建Item
属性:
class Order
{
public virtual IList<Item> Items { get; protected set; }
}
class Item
{
public virtual IList<Order> Orders { 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");
}
}