我对实体框架模型关系存在设计问题
我在edmx中有这个模型
业务规则:
Participant
可以包含多个Roles
,因此我在ParticipantRoles
和Participant
上创建了一对多关系的关系表Role
表
问题:
为了获得参与者的角色价值,我必须深入了解Participant->ParticipantRole->Role
(参见下面的JSON输出)
问题:
在EF中,如何设计表关系以绕过ParticipantsRole表。我希望以Particant.Role
而不是Participant.ParticipantsRole.Role
答案 0 :(得分:2)
您说 A Participant
可以有多个Role
s 。当然,Role
可以有多个Participant
。所以基本上这是一个多对多的关联。
当联结表只有两个外键时,实体框架将只映射纯多对多关联(没有连接类)。在您的情况下,如果表格ParticipantsRole
在生成模型时只有ParticipantId
和RoleId
的主键,则为ParticipantsRole
1}}不会被创建。您可以使用Participant.Roles
和Role.Participants
作为导航属性。
但是,该模型已使用ParticipantsRole
生成,您想要摆脱它。 (或者不,我会回到那里)。
这是你可以做的:
ParticipantRoles
。ParticipantRoles
,使其只有两个FK列,这两列都构成主键。ParticipantsRole
。这应该为您提供一个纯粹的多对多关联的模型。
但是,在执行此操作之前请三思而后行。 M2m协会有一种演变为1-m-1关联的方式(正如你现在所做的那样)。原因是迟早需要记录数据关于关联,因此联结表必须有更多字段并且不再是纯联结表。在您的情况下,我可以想象一天参与者的角色必须具有固定的订单,或者标记为默认的一个。在生产环境中将m2m关联更改为1-m-1可能是一次重大改革。 - 需要考虑的事情......