2

Order、Items、OrderItemsテーブルがあり、OrderとItemsがn:nの関係にあり、OrderItemsが連想テーブルであるとします。それらを定義するための2つのアプローチを以下に示しました。

1.OrderItemsと「HasMany」の関係を持つOrderおよびItemsエンティティを作成します。

2. Order、Items、およびOrde​​rItemsエンティティを、「ManytoMany」関係を持つOrderおよびItemsと、OrderおよびItemプロパティを含む「OrderItems」で作成します。

うまく機能するアプローチ1がありますが、アプローチ2が何をするのか知りたいです。

4

1 に答える 1

2

Items と Orders の関係が単純な場合 (単に関係が存在する場合)、Items.Orders と Orders.Items の間で ManyToMany マッピングを行います。これにより、NHibernate は 2 つの外部キーを含む単純な相互参照テーブルを生成および管理します。

一方、2 つの外部キーと共に記録する必要がある追加情報がある場合は、両側で HasMany を使用して、個別のエンティティまたは値オブジェクトを使用してその情報を取得する必要があります。

クラス:

Order
  Id
  Name
  OrderItems

Item
  Id
  Name
  OrderItems

OrderItem
  Id
  Order
  Item
  Quantity

マッピング:

注文:

Id(c => c.Id);
Map(c => c.Name);
HasMany(c => c.OrderItems).KeyColumn("OrderId");

アイテム:

Id(c = c.Id);
Map(c => c.Name);
HasMany(c => c.OrderItems).KeyColumn("ItemId");

オーダーアイテム:

Id(c => c.Id);
Map(c => c.Quantity);
References(c => c.Order);
References(c => c.Item);
于 2012-09-01T05:46:22.830 に答える