4

问题在标题中:

如何将多对多关系表作为实体?

4

1 回答 1

5

我想说,你的问题很有道理。看看这个文档部分:Chapter 24. Best Practices。摘录:

不要使用奇异的关联映射:

真正多对多关联的实际测试用例很少见。大多数时候,您需要存储在“链接表”中的附加信息。在这种情况下,最好使用两个一对多关联到一个中间链接类。事实上,大多数关联都是一对多和多对一的。因此,在使用任何其他关联样式时应谨慎行事。

我们处理这个问题的方法是引入配对对象。所以,如果有一个Employee有很多Contacts,我们可以有EmployeeContact。这样我们可以收获很多,因为我们可以用更多/新属性(IsMain、IsActive 等)丰富 EmployeeContact

在这种情况下,双方的映射是

  • 员工有one-to-many(设置)EmployeeContacts
  • 联系人有one-to-many(设置)EmployeeContacts
  • EmployeContact 有many-to-one(关系)员工
  • EmployeContact 有many-to-one(关系)联系人

因此,最后,映射是通常的,但我们可以使用子查询等搜索员工或联系人。

注意:在这种情况下是合适的,如果配对表有自己的代理键,例如 EmployeeContactId。它可以随时添加..例如带有身份...

于 2013-10-30T15:36:00.910 回答