多对多持有关系信息
Posted
技术标签:
【中文标题】多对多持有关系信息【英文标题】: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.
一个订单可以为每个产品附加几条信息:数量、特殊要求……
在数据库设计中,这由一个联结表表示,其中包含quantity
和specialRequest
字段。
但是如何在 ORM 中正确表示这一点,我只想使用 order.products
并获得 Products
的集合?由于我计划使用身份映射,因此所有订单中必须只有一个相同产品的实例,这使我无法拥有某种包含额外信息的“修改”产品。
有什么想法吗?
【问题讨论】:
nhibernate many-to-many mapping - additional column in the mapping table?的可能重复 【参考方案1】:根据 Eric Evans 的book,多对多关联通常会给域带来很多复杂性,推荐的方法是减少域中此类关联的数量。在您的特定情况下,Order 是一个聚合根,其中包含一堆包含数量和特殊请求字段的 OrderItem。
【讨论】:
【参考方案2】:我同意上述 Vadim 的观点。完成此操作的最简单方法是添加一个中间实体 (OrderItem),它表示与其他列的这种关系。我认为您不想将其视为订单和产品之间的多对多。
【讨论】:
以上是关于多对多持有关系信息的主要内容,如果未能解决你的问题,请参考以下文章
[信息抽取]基于ERNIE3.0的多对多信息抽取算法:属性关系抽取