【问题标题】:Does a many-many relationship in EF6 require the mapping table to be defined and to have a primary key?EF6 中的多对多关系是否需要定义映射表并具有主键?
【发布时间】:2014-01-21 04:28:38
【问题描述】:

用于多对多的 EF6 表是否需要主键,我是否必须为该多对多表创建一个类?我现在已经看到了两种创建多对多表的方法。在此问题中已在此处回答的问题:

How do I name a many-many table for EF6 and do I need to add special mapping for this?

还有这个问题中的那个:

Entity Framework : many to many relationship , Insert and update

第一个答案建议一个带有主键的表,而第二个答案(6 票)建议一个非常不同的方法,即多对多表未在 EF 中定义?

我现在的想法是不需要主键。我之所以这么想是因为当我查看由 ASP.NET 标识创建的新表时,多对多的 UserRoles 表没有主键。

【问题讨论】:

    标签: asp.net asp.net-mvc entity-framework many-to-many entity-framework-6


    【解决方案1】:

    当两个实体通过多对多关系相互关联时,Entity Framework Code First 将创建一个连接表,而您无需创建实体类来为连接建模。

    连接表确实有一个主键,但在这种情况下,它是由支持您的实体的表的两个外键组成的组合。在您的第一个链接中,我认为答案具有误导性,因为 EF 不会从该流利的 api 生成该 sql - 但如果您不喜欢默认值,它会告诉您如何命名列和表。

    第二个示例首先使用数据库并以相同的标准方式对多对多进行建模。即由两个外键组合而成的主键。

    您应该注意的是,有时您从多对多关系开始,然后您意识到该关系本身具有一些属性 - 然后您必须 promote the relationship to an entity in its own right 并且您可能会添加一个不同的主键

    参考:

    Configuring a Many-to-Many Relationship

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多