【问题标题】:Many-to-many holding information about a relationship多对多持有关系信息
【发布时间】:2011-05-19 16:45:26
【问题描述】:

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

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

一个订单可以为每个产品附加几条信息:数量、特殊要求……

在数据库设计中,这由一个联结表表示,其中包含quantityspecialRequest 字段。

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

有什么想法吗?

【问题讨论】:

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


【解决方案1】:

根据 Eric Evans 的book,多对多关联通常会给域带来很多复杂性,推荐的方法是减少域中此类关联的数量。在您的特定情况下,Order 是一个聚合根,其中包含一堆包含数量和特殊请求字段的 OrderItem。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-25
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 2013-09-04
      • 1970-01-01
      相关资源
      最近更新 更多