在ORM(无偏好)中,当我们需要保存有关此关系的信息时,如何最好地表示两个模型之间的多对多关系?
I have an Order, which can have many Products.
A Product can belong to many Orders.
订单可以在每个产品上附加几条信息:数量,特殊要求,......
在数据库设计中,这由一个连接表表示,该表包含quantity
和specialRequest
字段。
但是如何在ORM中正确表示这一点,我只想使用order.products
并获取Products
的集合?由于我打算使用身份映射,所有订单中必须只有一个同一产品的实例,这使我无法使用某种包含额外信息的“已修改”产品。 / p>
有什么想法吗?
答案 0 :(得分:1)
根据Eric Evans的book,多对多关联经常会在域中引入很多复杂性,推荐的方法是减少域中此类关联的数量。在您的特定情况下,Order是一个聚合根,它包含一堆包含quantity和specialRequest字段的OrderItem。
答案 1 :(得分:1)
我同意上面的Vadim。完成此操作的最简单方法是添加一个中间实体(OrderItem),该实体表示与其他列的这种关系。我认为您不希望在订单和产品之间将其视为多对多。