OrderとItemsの2つのクラスがあります
このような方法が欲しい
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; }
そして、これのマッピングをどのように行う必要がありますか?
どうやらあなたは多対多の関係を持っているようです:注文は多くのアイテムを持つことができ、アイテムは多くの注文に属することができます。リレーショナルデータベースでは、これを別のテーブルで表現する必要があります。このテーブルの名前がOrdersItems
であると仮定しましょう。
Fluent NHibernateドキュメント のStore/Productの例に従って、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");
}
}