多对多关于关系的信息

时间:2011-05-19 16:45:27

标签: hibernate nhibernate orm doctrine domain-driven-design

在ORM(无偏好)中,当我们需要保存有关此关系的信息时,如何最好地表示两个模型之间的多对多关系?

I have an Order, which can have many Products.
A Product can belong to many Orders.

订单可以在每个产品上附加几条信息:数量,特殊要求,......

在数据库设计中,这由一个连接表表示,该表包含quantityspecialRequest字段。

但是如何在ORM中正确表示这一点,我只想使用order.products并获取Products的集合?由于我打算使用身份映射,所有订单中必须只有一个同一产品的实例,这使我无法使用某种包含额外信息的“已修改”产品。 / p>

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

根据Eric Evans的book,多对多关联经常会在域中引入很多复杂性,推荐的方法是减少域中此类关联的数量。在您的特定情况下,Order是一个聚合根,它包含一堆包含quantity和specialRequest字段的OrderItem。

答案 1 :(得分:1)

我同意上面的Vadim。完成此操作的最简单方法是添加一个中间实体(OrderItem),该实体表示与其他列的这种关系。我认为您不希望在订单和产品之间将其视为多对多。