Domain driven design 在没有实体的情况下,相当于聚合

Domain driven design 在没有实体的情况下,相当于聚合,domain-driven-design,Domain Driven Design,我有几个聚合:存款、取款等。现在有一个VO称为分类账,它还有其他相关VO。分类账标记了存款和取款的交易,这两种交易都会发生。在这种情况下,它似乎类似于创建一个单独的聚合(创建一个文件夹并将分类账和相关类型放入其中)。但DDD不允许这样做,因为聚合根只能是实体 可能的解决办法是什么?在DDD边界内,我如何分类和放置分类账和相关VO 更新: 分类账就像一条记录,是每项操作的一笔交易。例如,当存款完成时,交易已经发生等,因此它没有状态,只保存一次,不再修改。它是为了保存记录而保存的 存款和取款都有状态

我有几个聚合:存款、取款等。现在有一个VO称为分类账,它还有其他相关VO。分类账标记了存款和取款的交易,这两种交易都会发生。在这种情况下,它似乎类似于创建一个单独的聚合(创建一个文件夹并将分类账和相关类型放入其中)。但DDD不允许这样做,因为聚合根只能是实体

可能的解决办法是什么?在DDD边界内,我如何分类和放置分类账和相关VO

更新:

分类账就像一条记录,是每项操作的一笔交易。例如,当存款完成时,交易已经发生等,因此它没有状态,只保存一次,不再修改。它是为了保存记录而保存的

存款和取款都有状态和生存期,它们的状态将从挂起更改为确认,或从挂起更改为取消。因此,它们不可能是服务

如果需要更多信息,请告诉我


提前感谢。

首先,想想账本中的其他VO。在这些VO中有没有你以前没有考虑过的隐藏身份?在这种情况下,这将是(根)实体,您将拥有您的聚合


如果不是这样,你可以考虑分类帐是否是一个VO,它是根实体在操作中的集合的一部分,操作是一个具有唯一身份的实体,撤回和存放将是它的专门化。p> 从您的更新中,听起来您可能有一个轻微的术语问题和缺少的实体

您可能需要将
分类帐
值对象重命名为
分类帐
分类帐

您缺少的实体可能是一个
分类账
(分类账就像一本书,一个记录或条目的容器)。这将有一组
账本记录


因此,您可能会调用
Ledger.MakeEntry(text)
,或者调用
LedgerService.GetLedgerSectionByDateRange(from,to)
,这将返回一个
Ledger
,其中填充了该日期范围内的
LedgerRecords
,等等。

这很奇怪,但
draw
听起来像是一个动作,不是一个实体,
分类账
听起来像是一个实体。您可能需要发布更多信息和代码示例。请查看更新的问题。