[英]Entity Framework: One to Many relationship
我有一个关于Entity Framework模型关系的设计问题
我在edmx中有这个模型
业务规则:
Participant
可以有多个Roles
因此我创建了一个关系表ParticipantRoles
,它在Participant
和Role
表上具有1对多的关系
问题 :为了获得参与者的角色价值,我必须深入了解Participant->ParticipantRole->Role
(参见下面的JSON输出)
问题:
在EF中,如何设计表关系以绕过ParticipantsRole表。 我想访问像Particant.Role
这样的角色而不是Participant.ParticipantsRole.Role
你说Participant
可以拥有多个Role
。 当然, Role
可以有多个Participant
。 所以基本上这是一个多对多的关联。
当联结表只有两个外键时,实体框架将只映射纯多对多关联(没有连接类)。 在您的情况下,如果表ParticipantsRole
在生成模型时只有一个由ParticipantId
和RoleId
组成的主键,则不会创建类ParticipantsRole
。 您可以将Participant.Roles
和Role.Participants
作为导航属性。
但是,该模型已使用ParticipantsRole
生成,您想要摆脱它。 (或者不,我会回到那个)。
这是你可以做的:
ParticipantRoles
。 ParticipantRoles
,使其只有两个FK列,它们都构成主键。 ParticipantsRole
。 这应该为您提供一个纯粹的多对多关联的模型。
但是,在执行此操作之前请三思而后行。 M2m协会有一种演变为1-m-1关联的方式(正如你现在所做的那样)。 原因是迟早需要记录关于关联的数据,因此联结表必须具有更多字段并且不再是纯联结表。 在您的情况下,我可以想象一天参与者的角色必须具有固定的订单,或者标记为默认的一个。 在生产环境中将m2m关联更改为1-m-1可能是一次重大改革。 - 需要考虑的事情......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.