实体模型零到多关系

时间:2015-06-23 12:37:01

标签: entity-framework relationship entity-relationship foreign-key-relationship

我有三个名为
的表 1. SubProcedure
2. UnitReference
3. TestReference

这里我有以下条件

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

  2. SubProcedure 可以 TestReferences

  3. TestReference 应具有 SubProcedure UnitReference

  4. TestRefernce表记录将是这样的

    以下是TestReferences的TestRefenceTable图片链接。

    我现有的实体模型图链接是ExistingModel

    我无法在此处发布我的图片,因此我添加了图表的参考链接。

    我的问题是

    1. 我如何表示 SubProcedure =>之间的关系? UnitReference

    2. 如何表示 UnitReference =>之间的关系? TestReference

    3. 我如何表示 SubProcedure =>之间的关系? TestReference ..

    4. 我想确保我的三个表之间的现有关系是正确的,如果错误的意思请指导我纠正它。

      先谢谢

1 个答案:

答案 0 :(得分:0)

你的模特看起来很好,做你想做的事情;具体是:

  • 每个UnitReference可以有多个SubProcedure s
  • 每个SubProcedure可以有多个TestReference s
  • UnitReference可以有多个TestReference s

如果这是您想要的,那么您已经正确完成了。

我要注意的一件事是你的模型中有冗余。您可以通过两条不同的路径从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移到另一个.SubProcedure,则需要更新TestReference的{​​{1}}属性,但 .UnitReference属性到新.UnitReference的{​​{1}}属性,或者数据不一致。