Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 如何建立三元关系模型_Entity Framework_Entity Relationship_Entity Framework 5 - Fatal编程技术网

Entity framework 如何建立三元关系模型

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可以处理这种多

将实体映射到EF5的三元关系的最佳方法是什么

例如,三个实体:

Bike
Crash
Person
那么就需要知道三元关系:

  • 车祸中是哪个人的自行车
  • 在自行车X和Y之间发生碰撞的人员
  • 自行车B上的人A发生了什么车祸
  • 等等

    我应该如何创建实体?
    是否为三元关系创建新实体的唯一可能性?

    选项1

    假设有
    个人自行车
    组合可以在没有
    碰撞的情况下存在(感谢上帝)。因此,您可以创建一个二元关系(连接表)
    PersonBike
    ,假设自行车不是由特定的人拥有的,则将FK设置为person和bike。EF可以处理这种多对多关系,而不需要模型中的关联类

    然后,太糟糕了,人-自行车组合可能会卷入车祸。一次碰撞中可能有两个以上的组合。基本上,您可以在
    Crash
    中收集
    PersonBikes
    。在这种情况下,模型中根本没有关联类。但是,如果您想更多地了解
    Crash
    PersonBike
    之间的关联,例如谁犯了车祸罪,您需要在这两者之间建立一个连接表:
    CrashPersonBike
    与FK的to
    Crash
    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。