实体模型零对多关系
Entity Model Zero to Many Relationship
我有三个表命名为
1. 子程序
2. 单位参考
3. 测试参考
这里我有以下情况
一个子过程应该至少有一个UnitReference
A SubProcedure 可以有 Zero 或 Many 测试参考
A TestReference 应该有 SubProcedure 和 UnitReference
TestRefernce Table 记录会是这样
这是一个 TestRefenceTable 图片 link 到 TestReferences。
我现有的实体模型图link是ExistingModel。
我无法在此处 post 我的图片,因此我为图表添加了参考 link。
我的问题是
我如何表示 SubProcedure => UnitReference .
[=76= 之间的关系]
我如何表示 UnitReference => TestReference 之间的关系。
我如何表示 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
属性,不然数据会不一致
我有三个表命名为
1. 子程序
2. 单位参考
3. 测试参考
这里我有以下情况
一个子过程应该至少有一个UnitReference
A SubProcedure 可以有 Zero 或 Many 测试参考
A TestReference 应该有 SubProcedure 和 UnitReference
TestRefernce Table 记录会是这样
这是一个 TestRefenceTable 图片 link 到 TestReferences。
我现有的实体模型图link是ExistingModel。
我无法在此处 post 我的图片,因此我为图表添加了参考 link。
我的问题是
我如何表示 SubProcedure => UnitReference .
[=76= 之间的关系]我如何表示 UnitReference => TestReference 之间的关系。
我如何表示 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
属性,不然数据会不一致