7得票1回答
DDD中的聚合根和仓储

我刚开始接触DDD,遇到了“聚合根”这个术语。 我目前的理解是,它是一种包含对其他补充实体的引用的父实体。例如:聚合根将是员工,还包含职位、班次、性别和薪水等信息。 我首先想问的问题是:我的理解是否正确? 其次,我有一种印象,即存储库仅针对每个聚合进行定义。但是,我不明白如何检索有关其他...

8得票1回答
面向领域设计中子实体的变更跟踪

我在理解聚合根如何跟踪子实体的更改方面遇到了一些困难。 假设我有一个聚合: 订单(根) 订单行项目 其中Order类是聚合根。那么,我如何通过Order类来跟踪每个OrderLineItem的更改? 当我创建一个仓储(实现),例如OrderRepository(因为只有聚合根才能拥...

13得票2回答
DDD: 针对非聚合根的引用解决方案

我有两个聚合根和两个非聚合根实体: 我知道,关系D -> B违反了DDD原则。 我听说,在大多数情况下,解决方案是将被引用的实体作为新的聚合根。 但如果B是A的真正子级(B不能离开A),那么将B作为新的聚合根真的是一个选择吗?

9得票3回答
聚合根。兔子洞会有多深?

我正在尝试在当前项目中使用仓储模式,并且目前正在尝试对领域进行建模并找到聚合根。 我已经阅读了“级联删除”规则,该规则指出,如果在删除根时删除成员没有意义,则不应将其作为根的一部分。 我将使用警方事件作为示例: 事件(聚合根)- 这可能包含调查人员,每个人员所做的笔记。它还可以包含嫌疑人...

11得票4回答
查找值应该建模为聚合根吗?

作为我的领域模型的一部分,假设我有一个名为“WorkItem”的对象。该“WorkItem”对象与查找值存在多个关系,例如: “WorkItemType”: UserStory Bug Enhancement “Priority”: High Medium ...

7得票4回答
如何建模聚合根,以便在多个步骤中创建,就像向导一样

我将以Airbnb作为例子。 当您注册Airbnb账户时,您可以通过创建房源来成为房东。为了创建房源,Airbnb UI会通过多个步骤引导您完成新房源的创建过程: 它还会记住您最后一次停留的步骤,因此下次您要恢复该过程时,它会重定向到您离开的位置。 我一直在犹豫是否应将房源列为聚...

16得票6回答
DDD - 聚合内子对象的修改

我在处理一个相当复杂的情况时遇到了一些困难。我看到过很多类似的问题,但没有一个能满足我的需求。 一个订单(聚合根)会创建多个订单行(子实体)。根据业务规则,每个订单行必须在整个订单生命周期内保持相同的标识。订单行有许多(20+)属性,并且在订单被“锁定”之前可能经常发生变化。此外,在根级别必...

7得票1回答
DDD: 另一个聚合根访问了该聚合根

我目前正在开发一个DDD应用程序,对于需要从另一个聚合根访问聚合根的情况感到困惑。以下是我的边界上下文概述: 用户可以加入网站并创建他们感兴趣的主题帖子。他们还可以创建组,并发布特定于他们创建的组或所有网站成员可见的帖子。用户还可以上传照片以供其他人查看,或者上传Word文档和PDF文件以与...

13得票2回答
Entity Framework中的聚合根支持

如何告诉Entity Framework关于聚合(Aggregates)? 在保存聚合时,保存聚合内的实体 在删除聚合时,删除聚合内的实体 当两个不同的用户尝试修改同一聚合内的两个不同实体时,引发并发错误 在加载聚合时,即使我们访问聚合内的所有实体之前存在某些时间延迟,也要提供聚合的一致的...

20得票5回答
DDD:实体在持久化之前的身份标识

在领域驱动设计中,实体的一个定义特征是它具有唯一标识。 问题: 我无法在实例创建时为实体提供唯一标识。这个标识只有在实体持久化之后由仓储库提供(这个值从底层数据库提供)。 我不能使用 Guid 值来解决这个问题。现有数据是使用 int 主键值存储的,我无法在实例化时生成唯一的 int。 ...