相当于没有实体的聚合



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

可能的解决方案是什么?在DDD的边界内,我如何对分类帐和相关的VOs进行分类和放置?

更新:

分类帐就像一个记录,每一次操作的交易。例如,当一笔存款已经存入,一笔交易已经发生,等等。所以它没有状态,只会保存一次,不会再修改。它被持久化用于保存记录。

存款和取款都有状态和生存期,它们的状态将从Pending变为Confirmation,或者从Pending变为Cancelled。所以它们不可能是服务。

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

从你的更新中,听起来好像你可能有一个轻微的术语问题和一个缺失的实体。

您可能需要将您的Ledger值对象重命名为LedgerRecordLedgerEntry

您丢失的实体可能是Ledger(分类帐类似于书,是记录或条目的容器)。这将有一个LedgerRecords的集合。

那么你可能会调用Ledger.MakeEntry(text)LedgerService.GetLedgerSectionByDateRange(from, to),这将返回一个Ledger,其中包含该日期范围内的LedgerRecords,等等

首先,考虑作为分类帐一部分的其他vo。在这些VOs中,是否有你之前没有考虑过的隐藏身份?在这种情况下,这将是(根)实体,您将拥有您的聚合。

如果不是这样,您可以考虑分类帐是否是一个VO,它是聚合的一部分,其中根实体是Operation,其中Operation是具有唯一标识的实体,取款和存款将是它的专门化。

最新更新