实体模型零对多关系

Entity Model Zero to Many Relationship

我有三个表命名为
1. 子程序
2. 单位参考
3. 测试参考

这里我有以下情况

  1. 一个子过程应该至少有一个UnitReference

  2. A SubProcedure 可以有 ZeroMany 测试参考

  3. A TestReference 应该有 SubProcedureUnitReference

TestRefernce Table 记录会是这样

这是一个 TestRefenceTable 图片 link 到 TestReferences

我现有的实体模型图link是ExistingModel

我无法在此处 post 我的图片,因此我为图表添加了参考 link。

我的问题是

  1. 我如何表示 SubProcedure => UnitReference .

    [=76= 之间的关系]
  2. 我如何表示 UnitReference => TestReference 之间的关系。

  3. 我如何表示 SubProcedure => TestReference ..

    [=76 之间的关系=]

我想确保我现有的三个表之间的关系是正确的,如果它的错误意味着请指导我更正它。

提前致谢

您的模型看起来不错,并且可以满足您的要求;具体来说:

  • 每个UnitReference可以有很多SubProcedure
  • 每个SubProcedure可以有很多TestReference
  • 一个UnitReference可以有很多TestReference

如果那是你想要的,那么你就做对了。

我要注意的一件事是你的模型有冗余。您可以通过两种不同的路径从 UnitReference 导航到 TestReference:直接导航或通过 SubProcedure。这意味着其中一个关系是多余的。让我解释一下使用 LINQ 方法语法:

//To get all SubProcedures for a UnitReference
context.UnitReferences.Find(UnitReferenceId).SubProcedures;

//To get all TestReferences for a UnitReference
context.UnitReferences.Find(UnitReferenceId).TestReferences;

//instead of the line above you could use the other relationship like this
context.UnitReferences.Find(UnitReferenceId).SubProcedures.SelectMany(s => s.TestReferences);

冗余没有什么错误 - 它可能非常有用。请注意,在更新的情况下,您需要维护两个独立的关系。例如,如果要将 TestReference 从一个 SubProcedure 移动到另一个,则需要更新 TestReference.SubProcedure 属性,但是 .UnitReference属性换成新的SubProcedure.UnitReference属性,不然数据会不一致