EF6中的多对多关系是否需要定义映射表并拥有主键?

时间:2014-01-21 04:28:39

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

用于多对多的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表没有主键。

1 个答案:

答案 0 :(得分:4)

当两个实体彼此相关且具有多对多关系时,Entity Framework Code First将创建一个连接表,而无需创建实体类来对连接建模。

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

第二个例子是首先使用数据库并以相同的标准方式对多对多进行建模。即一个主键,它是两个外键的组合。

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

参考:

Configuring a Many-to-Many Relationship