将实体映射到与EF5的三元关系的最佳方法是什么?
例如,有三个实体:
Bike
Crash
Person然后就会有一种三元关系:
等。
我应该如何创建我的实体?是否为三元关系创建新实体的唯一可能性?
发布于 2012-11-13 09:42:26
选项1
假设Person-Bike组合可以在没有Crashes的情况下存在(谢天谢地)。因此,您可以创建一个二元关系(连接表) PersonBike具有FK的人和自行车,假设自行车不是由特定的人拥有。EF可以在模型中没有关联类的情况下处理多到多的关系。
然后,不幸的是,人-自行车组合可能会涉及到撞车。在一次碰撞中可能有两个以上的组合。基本上,您可以在Crash中拥有一个集合Crash。在这种情况下,模型中根本没有关联类。但是,如果您想更多地了解Crash与PersonBike之间的关联,例如谁对坠机负有责任,那么您需要在两者之间建立一个连接表:CrashPersonBike与FK's to Crash和PersonBike,以及一个或多个描述关联的字段(例如,有罪的是/否)。这需要EF模型中的关联类。
选项2
自行车有特定的所有者(人):让Person有一个Bikes集合(表自行车有FK到Person)。现在,只由涉及到的自行车来描述一次撞车就足够了,因为自行车决定了那个人。因此,Crash可以有一个Bikes集合(同样是:模型中没有关联类),或者一个包含更多细节的关联类CrashBike,如上面所述。
选项3
一个“真”三元关系,它需要模型中的关联类(CrashPersonBike),不管有没有额外的细节。
在任何情况下,您都需要业务逻辑来防止相同的人(或选项1和3中的自行车)卷入一次崩溃。选项1和2有一个额外的好处,模型可以描述人-自行车的组合,除了车祸。它应该是1还是2取决于自行车人的所有权。
https://stackoverflow.com/questions/13355562
复制相似问题