2

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

例如,三个实体:

Bike
Crash
Person

那么就会有一个三元关系要知道:

  1. 撞车的那个人的自行车 X
  2. 参与自行车 X 和 Y 之间的碰撞 X 的人员
  3. 骑自行车 B 的人 A 发生了哪些事故

等等

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

4

1 回答 1

2

选项1

假设有些Person-Bike组合可以在没有Crashes 的情况下存在(谢天谢地)。因此,您可以创建PersonBike具有 FK 与人和自行车的二元关系(联结表),假设自行车不属于特定人员。EF 可以在模型中没有关联类的情况下处理这种多对多关系。

然后,太糟糕了,Person-Bike 组合可能会导致崩溃。一次崩溃中可能有两种以上的组合。基本上你可以PersonBikesCrash. 在那种情况下,模型中根本就没有关联类。但是,如果您想了解更多关于 和 之间的关联CrashPersonBike例如谁对崩溃有罪,则需要两者之间的联结表:CrashPersonBike带有 FK 的 toCrashPersonBike一个或多个描述关联的字段(如有罪是/否)。这将需要 EF 模型中的关联类。

选项 2

Bikes 有特定的所有者(人):让我们Person有一个Bikes集合(表 Bike 对 Person 有一个 FK)。现在只用涉及的自行车来描述碰撞就足够了,因为自行车决定了人。因此Crash可以有一个Bikes集合(同样:模型中没有关联类)或CrashBike包含更多详细信息的关联类,如上所述。

选项 3

一个“真正的”三元关系,需要模型中的关联类 ( CrashPersonBike),有或没有额外的细节。

在所有情况下,您都需要业务逻辑来防止同一个人(或选项 1 和 3 中的自行车)卷入一次车祸。选项 1 和 2 的另一个好处是模型可以描述除碰撞之外的人-自行车组合。应该是 1 还是 2 取决于自行车人的所有权。

于 2012-11-13T09:42:26.577 回答