Entity framework 如何建立三元关系模型
将实体映射到EF5的三元关系的最佳方法是什么 例如,三个实体:Entity framework 如何建立三元关系模型,entity-framework,entity-relationship,entity-framework-5,Entity Framework,Entity Relationship,Entity Framework 5,将实体映射到EF5的三元关系的最佳方法是什么 例如,三个实体: Bike Crash Person 那么就需要知道三元关系: 车祸中是哪个人的自行车 在自行车X和Y之间发生碰撞的人员 自行车B上的人A发生了什么车祸 等等 我应该如何创建实体? 是否为三元关系创建新实体的唯一可能性?选项1 假设有个人自行车组合可以在没有碰撞的情况下存在(感谢上帝)。因此,您可以创建一个二元关系(连接表)PersonBike,假设自行车不是由特定的人拥有的,则将FK设置为person和bike。EF可以处理这种多
Bike
Crash
Person
那么就需要知道三元关系:
是否为三元关系创建新实体的唯一可能性?选项1 假设有
个人自行车
组合可以在没有碰撞的情况下存在(感谢上帝)。因此,您可以创建一个二元关系(连接表)PersonBike
,假设自行车不是由特定的人拥有的,则将FK设置为person和bike。EF可以处理这种多对多关系,而不需要模型中的关联类
然后,太糟糕了,人-自行车组合可能会卷入车祸。一次碰撞中可能有两个以上的组合。基本上,您可以在Crash
中收集PersonBikes
。在这种情况下,模型中根本没有关联类。但是,如果您想更多地了解Crash
和PersonBike
之间的关联,例如谁犯了车祸罪,您需要在这两者之间建立一个连接表:CrashPersonBike
与FK的toCrash
和PersonBike
以及一个或多个描述关联的字段(如有罪是/否)。这将需要EF模型中的关联类
选项2
自行车有特定的所有者(人):让Person
拥有Bikes
集合(桌上自行车有一个FK-to-Person)。现在,仅由涉及的自行车来描述碰撞就足够了,因为自行车决定了人。因此,Crash
可以有一个Bikes
集合(同样:模型中没有关联类)或一个关联类CrashBike
,其中包含上述更多细节
选项3
“真实”的三元关系,需要模型中的关联类(CrashPersonBike
),包括或不包括额外细节
在所有情况下,您都需要业务逻辑来防止同一个人(或选项1和3中的自行车)卷入一次碰撞。选项1和选项2还有一个额外的好处,即该模型可以描述除碰撞之外的人-自行车组合。是1还是2取决于自行车车主。Gert,非常感谢您的详细回答!。现在要考虑的是哪一个更适合我的应用程序。嘿,我试图了解如何管理选项1(在Crash
中有一组PersonBike
s)和“模型中没有关联类”。如果我给PersonBike
一个FK到Crash
,PersonBike
成为一个实体,我就失去了Person
和Bike
之间的直接多对多关系。有没有办法避免这种情况?顺便说一下,我用的是EF4。