实体框架6 - 包含附加信息的多对多表

时间:2013-10-20 16:28:41

标签: sql-server entity-framework many-to-one entity-framework-6

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

    • Id
    • FirstName
    • 名字
  1. PHONENUMBERS
    • 编号
  2. PhoneNumberTypes
    • 编号
    • 名称
    • 描述
  3. PeoplePhoneNumbers
    • PERSONID
    • PhoneNumberTypeId
    • PhoneNumberId
  4. 两个主要表格是People和PhoneNumbers。还有一个PhoneNumberTypes描述PhoneNumber的类型(Home,Work等)。

    PeoplePhoneNumbers表用作People和PhoneNumbers之间的“多对多”关系表。但是它也连接到PhoneNumberTypes来描述关系。

    我一直在试图弄清楚如何处理此Entity Framework,因为EF不允许您向Association(多对多)表添加其他信息。

    除了PhoneNumberType信息,我还发现他们是我需要在关联表中记录的其他数据,如“开始日期”,“结束日期”等。

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

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

1 个答案:

答案 0 :(得分:0)

不应将PhoneNumberTypes链接到PeoplePhoneNumbers。让PeoplePhoneNumbers成为现实,只有一个联结表。 PhoneNumberTypes应链接到PhoneNumbers。 EF应该能够按照惯例创建此设置。描述电话号码的其他信息也应与PhoneNumbers相关联。此设计遵循更多领域驱动设计(DDD)原则,并且还生成更好的数据库设计。

相关问题