1

看来我不允许发布图片,所以让我描述一下图片。它是一个 SQL 表图,显示了 4 个表之间的关系。这些表格是:

  1. 人们
    • ID
  2. 电话号码
    • ID
    • 数字
  3. 电话号码类型
    • ID
    • 姓名
    • 描述
  4. 人电话号码
    • 个人身份
    • 电话号码类型 ID
    • 电话号码 ID

两个主要表是 People 和 PhoneNumbers。还有一个 PhoneNumberTypes 描述了 PhoneNumber 的类型(家庭、工作等)。

PeoplePhoneNumbers 表用作 People 和 PhoneNumbers 之间的多对多关系表。然而,它也连接到 PhoneNumberTypes 来描述这种关系。

我一直试图弄清楚如何处理这个实体框架,因为 EF 不允许您向关联(多对多)表添加其他信息。

除了 PhoneNumberType 信息之外,我还发现它们是我需要在关联表中记录的附加数据,例如“开始日期”、“结束日期”等。

到目前为止,我想出的唯一解决方案是在 EF 中创建一个实体,将 PhoneNumberTypes、PhoneNumbers 和 PeoplePhoneNumbers 中的字段组合成一个实体。然后使用 SQL 存储过程对它进行 CRUD 操作。

我更喜欢以 EF 为中心的解决方案。有人知道吗?

4

1 回答 1

0

PhoneNumberTypes 不应链接到 PeoplePhoneNumbers。让 PeoplePhoneNumbers 成为它的本来面目,并且只是一个联结表。PhoneNumberTypes 应该链接到 PhoneNumbers。EF 应该能够按照约定创建此设置。描述电话号码的附加信息也应该与 PhoneNumbers 相关联。这种设计遵循更多的领域驱动设计 (DDD) 原则,并且还生成了更好的数据库设计。

于 2013-10-20T21:37:56.823 回答