![]() |
1
14
总的来说,我很想回答 Mu (在禅宗意义上),因为从DDD的角度来看,场景是错误的。在DDD中,我们从业务需求和领域专家开始,并从中得出 域模型
也就是说,我会尽力做到最好。 在大多数情况下,订单是一个非常重要的业务对象,显然我们需要了解订单行,包括每一行中的产品,因此我们似乎需要从订单行(订单详细信息)到产品的关联。 然而,当给定一个特定的产品时,我们很少需要知道它包含在哪个订单中,所以这就意味着一种单向关系。我们可以从订单行导航到产品,但不能从产品导航到订单行。 然而,上述分析在更深层次上可能是错误的。想象一下开发人员和领域专家之间的以下对话: 我们创建了从订单到产品的关联,以便我们始终了解特定订单中产品的所有信息。 听起来不错,但供应商呢? 开发人员: 这也包括在内。 实验: 那么,当我们更换产品的供应商时会发生什么? 开发人员: 这不是我们想要的。我们希望数据反映发货时的订单。
这种情况可能会建议将订单行与产品之间的关联完全切断。订单应保存历史(快照)产品数据,而不是当前产品数据。
据我目前了解的关联和聚合, 关联定义聚合 . 如果有订单,我们想了解客户的情况吗?很有可能。如果有客户,您想知道订单的情况吗?可能
这意味着一种双向关系,这使得
在某些情况下,这可能是完全合理的,而在其他情况下,这可能真的很笨拙。这取决于业务需求。。。
你可以考虑创建一个
可能不会,但如果您从
所以我
喜欢小骨料
在这个例子中,我将把聚合限制为
之间没有正式的联系
|
![]() |
Tony Raimo · 域实体是否应该调用存储库? 7 年前 |
![]() |
Seb · DDD只读存储库返回“值对象” 7 年前 |
![]() |
tlt · 使用嵌套对象和大集合进行聚合根优化 7 年前 |
![]() |
PatrickSJ · DDD,状态对象/值对象 7 年前 |
![]() |
msmani · DDD更改聚合根id 7 年前 |
![]() |
DuskMcDusk · 逻辑和性能中的聚合根冲突 7 年前 |