gpt4 book ai didi

c# - Entity Designer 是否支持具有重复关联数据的多对多关系?

转载 作者:行者123 更新时间:2023-11-30 17:05:26 25 4
gpt4 key购买 nike

套餐 A 有一台台式机 Y 和一台显示器 Z。套餐 B 有一台台式机 Y 和两台 显示器 Z。我想在 Entity Designer 创建的数据库中表示这种关系。

StandardPackageStandardMachine(有台式机、显示器、笔记本电脑等)之间存在多对多关系。每个季度,我们都会更新我们的包裹,并且客户会下订单。他们选择一个包,下订单时,该包的 StandardMachines 将其数据(类型、品牌、型号等)转储到新创建的 Machines 中。

问题在于 Entity Designer 为 StandardPackageStandardMachine 关系创建联结表的方式。联结表有两列对应于关系两端记录的 ID,联结表的主键是这两个 ID 的组合。所以,对于第一段的例子,如果Package A的Id是1,Package B的Id是2,Desktop Y的Id是1,Monitor Z的Id是2,我需要的是

StandardPackageId | StandardMachineId
------------------|------------------
1 | 1
1 | 2
2 | 1
2 | 2
2 | 2

但显然你不能有两个 2/2 记录。

是否有一种很好的方式告诉 Entity Designer 我打算做什么,以便它会为联结表创建一个自动递增的主键列?还是我必须求助于手动创建联结表并自己处理关联?

顺便说一下,如果有人甚至知道如何改写我的问题标题,请这样做。

最佳答案

Or do I have to resort to manually creating the junction table and handling the association myself

是的,你有。因为该表不是联结表,而是一个实体。

多对多关联的语义与您要表达的意思有微妙的不同。常规 n:m 关联表中的一条记录表示“A 与 B 相关”。在您的表中,它会表示“A 有一个 B 的实例”。

前面的表达式在重复时总是多余的:“A 与 B 相关”- 好的,我们知道。后者不是:“A 有 B 的另一个实例”。所以有两个不同实例,这意味着每个实例都有一个身份。身份是实体的核心概念。

所以 StandardPackageStandardMachine 只是一个常规类,代表包中的机器实例,即使它仍然是“虚拟机”。

关于c# - Entity Designer 是否支持具有重复关联数据的多对多关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16551199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com