问题标签 [multiplicity]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 实体框架如何判断是否应该在关系上使用多个“一”或“零或一”?
作为我们代码生成过程的一部分,我正在以编程方式创建一个 edmx 文件,我想知道当您“从数据库更新模型”时,设计师是如何决定使用“1”或“0..1”来建立关系的。对此有何见解?谢谢
编辑:
好的,我认为当“多”端是可为空的外键时,它使用“0..1”,如果它不可为空,则使用“1”。谁能证实这一点?
entity-framework - 实体框架 - 更改关系多重性
我的数据库中有一个表 [User] 和另一个表 [Salesperson]。[Salesperson] 定义了一个唯一的UserID,它使用外键映射到 [User].UserID。当我使用 Entity Framework 生成模型时,我得到 [User]-[Salesperson] 之间的一对多关系,这意味着每个用户都有一个“销售人员集合”,但我想要的是 0..1-to -1 关系,其中每个用户都有对“销售人员”的可为空引用。
我尝试摆弄 XML 并更改关联的多重性设置,但这只会产生构建错误。我想要实现的目标与在 [User] 中引用 [Salesperson].SalespersonID 的可为空的 SalespersonID 没有什么不同,但是因为销售人员只针对特定用户存在,所以感觉就像我只是弄乱了我的 [User] 表结构让关系在实体框架中指向正确的方向。
我能做些什么来改变这种关系的多样性吗?
associations - 关联多重性在类图中的重要性是什么?
关联多重性在类图中的重要性是什么?为什么以及何时应该指出它们?谢谢。
entity-framework - 如何在 EF 中模拟 2 的多重性
我有两种情况我想要这样的东西。在我的模型中,我有一个Message
涉及一个或两个Persons
的。此外,该消息与两个 相关Addresses
,即一个 fromAddress
和一个 to Address
。
在两者的第一种情况下Persons
,我想指定 1---1..2 之间的关联Message
和Person
多重性,或者指定两个关联,一个与 1---1,另一个与 1---0.. 1. 但是,我不能(或不知道如何)将多重性设置为两个。我可以想象有可能将其设置为 1--* 并将约束设置为最大值 2(但是我不知道该怎么做)。
通过添加这两个关联,当我从侧面看时我感觉有点奇怪,Message
因为这两个关联都有一个 1 ,这表明 aPerson
应该有两个Messages
与之相关。对于两个关联,我可能想要像 0..1 这样的Message
东西,对它们有异或约束或其他东西,但我不知道这在 EF 中是否是好的做法,甚至可能。
对于第二种情况,问题非常相似,只是总有一个 fromAddress
和一个 to Address
。设置多重性 1--* 对我来说似乎不合适。在这里,我想肯定应该有两个关联,一个 from 和一个 to 关联(恰好都去Address
实体)。Message
然而,这会在有两个 1 或两个 0..1 的情况下导致相同的问题。
所以我的问题是,如何在 EDM 中正确建模?
提前致谢。
更新1:
为了澄清这个问题,我将提供一些背景信息,说明我为什么需要这样一个模型。我必须能够创建一条消息。在此消息中,我必须说明它涉及一个人还是两个人。在这些人中,我指定了名字、姓氏和其他一些非唯一属性(两个人可以有相同的名字)。我可以在实体中转储所有这些属性Message
(fname1、lname1、fname2、lname2),但这似乎是个坏主意。因此,Person
实体诞生了。但是,这可能看起来Person
可以链接到许多消息,但事实并非如此。可以有两个不同的人具有相同的属性。无法判断这些人在现实生活中是否真的是同一个人。
在地址的情况下,类似的论点成立。两个地址的拼写可能略有不同,但如果我将它们写在一封信上并邮寄,它们都会到达同一个位置(例如 sesamestreet 或 sesamestr.)。所以我没有一个Address
实体连接到多个Messages
. 同样,唯一的原因Address
是一个单独的实体,因为我有两个具有完全相同属性的 em。
从数据库设计的角度来看,这可能没有意义,从类图的角度来看,它可能更有意义。我的印象是 EF 中的 EDM 不应该像数据库设计,而更像是域模型,所以我希望我做对了。
更新 2:
我只是想到了我认为在这种情况下可能是最好的方法。因为和之间几乎没有区别Person1
,Person2
我觉得Message
和Person
1..* 之间的关联是可以接受的。许多意味着两个的事实将是较低层处理的事情。在地址的情况下,from 和 to 是完全不同的。它们都是地址,但我觉得我无法将它们列在列表中。我可以将 from 和 to address 拆分为单独的实体,并让它们继承自Address
. 然后Message
与每个子类关联。这似乎有点矫枉过正,但您可以推断,在某些时候,发件人地址可能具有与收件人地址不同的要求,因此具有不同的属性。
不过,我并不是 100% 高兴(尤其是地址部分)。这个解决方案可能好也可能不好,但我觉得它避免了核心问题。
entity-framework-4 - 实体框架 4 - 设计数据库以强制执行 1 比 1 的多重性
我在我的应用程序中遇到了一个场景,我希望实体之间具有 1:1 的多重性,但我不知道如何修改我的数据库来确保这一点。
假设我有一个 Document 表和一个 Index 表,其中 Document 总是有一个 Index,并且 Index 只会包含在一个 Document 中。在 Document 表中,我有一个 IndexID 字段,因此 Document 实体有一个指向其索引的导航属性,但 Index 实体有一个名为 Documents 的集合导航属性,这不是我想要的,因为只会有一个相关的 Document。
以某种方式编辑我的数据库架构会很好,这样当我从数据库生成模型时,文档实体有一个到索引的导航并且索引有一个导航属性返回到文档。这样的事情可能吗?
我想我可能可以在模型设计图面上编辑实体模型或其关联来实现这一点。但我担心在某个阶段如果我重新加载模型,它会重置这个和任何其他类似的。
是否有一个优雅的解决方案可以让 EF 自动实现 1:1 的多重性?
感谢您的任何建议!
class - UML 多重性差异
multiplicity*
和 和有什么不一样0..*
?
例如相同关系的两个版本(A 和 B):
对于任意数量的用户使用 Web 服务的说法,什么更正确?
data-modeling - 在企业架构师的数据建模中使用鱼尾纹符号
我只能在企业架构师中使用具有传统 0..* 样式多重性的连接器,而不是鱼尾纹连接器。我尝试过使用不同的绘图样式,但仍然无法弄清楚如何更改连接器。任何帮助将不胜感激:)
c# - 循环导入文件时违反了 EF 代码优先多重性约束
编辑更好地隔离错误;见下文。
我在 C# Code-First EF 模型中有一个ParentObject
和类:ChildObject
我想FamilyDB
从一组 CSV 文件中填充一个数据库。Parents
已经存在的;我只需要覆盖和分配TheChildren
每个ParentObject
.
但我总是以错误告终:
该错误消息似乎指责我ParentObject
两次分配给相同的,但我没有做这样的事情,因为每个recordSet
对应于不同的ParentName
(因此是父母)。那么发生了什么?
bash - 如果用户错误地调用脚本,使 Bash 脚本退出并打印错误消息
需要的脚本是
编辑,脚本已更改为
调用不带参数的脚本不会产生任何错误并且是空白的
我有一点代码
此代码提取包含单个单词的行并将输出泵送到一个新文件,例如
输出将是
代码有效,用户调用代码使用./scriptname file > newfile
但是,如果用户错误地调用脚本,我正在尝试扩展代码以向用户提供错误消息。
对于错误消息,我正在考虑回显类似scriptname file_to_process > output_file
.
我确实尝试过
然而,我的运气并不好。如果我只使用脚本名称调用,代码会运行但什么也不做。此外,如果我只使用脚本名和输入文件调用脚本,它将输出结果而不是退出并显示错误消息。
我试过的其他的是
鉴于我到目前为止收到的回复,我现在的代码是
在没有输入文件的情况下调用脚本时,脚本什么都不做,必须用 ctrl+c 中止,仍然试图获得调用消息的回显。
database - 如何在 StarUML 中添加多重性值
我正在学习数据库开发,我正处于必须创建自己的 ER 模型的阶段。StarUML 到目前为止一切都很好,但是课程笔记没有提到如何在实体类型(基数和参与)之间添加多重性选项。
我希望有人可以在这里帮助我吗?
非常感谢彼得