如果 Items 和 Orders 之间的关系很简单(只是存在关系),那么您将在 Items.Orders 和 Orders.Items 之间进行 ManyToMany 映射。这将导致 NHibernate 生成和管理一个包含两个外键的简单交叉引用表。
另一方面,如果您需要与两个外键一起记录其他信息,则必须使用不同的实体或值对象来捕获该信息,并在两侧使用 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);