【发布时间】:2019-07-07 19:27:35
【问题描述】:
假设我有一个名为 Folder 的 AggregateRoot,其中包含如下子文件夹的集合:
class Folder : AggregateRoot
{
string Name { get; }
ICollection<Folder> Folders { get; }
}
这里的内部集合实际上只是其他文件夹聚合的聚合 ID 列表,在枚举时会延迟解析。
此构造在聚合不仅引用其他聚合而且还将其文件夹属性定义为其他文件夹聚合的集合的域建模中有效吗?
为什么?上面的例子可能不是特别好,但我的目标主要是有一种自然的方式来处理聚合集合,并隐藏 agg-references 是通过表面下的存储库解决的事实。我想像使用实体集合一样轻松地使用聚合。
我在这里的想法也是,子文件夹在某种程度上归父聚合所有,集合确实是一种表示存储聚合的地方的方式,即使存储聚合并不是真的如此更一般地通过存储库。
递归的例子并不重要。重点是聚合“似乎”拥有其他聚合的事实。当在两个文件夹中进行更改时,当然只能一个一个地保存它们,但这应该没问题。我还必须包含一些规则,即文件夹只能在适当的位置创建而不是手动添加,以便它们可以出现在多个 agg-collection 中。
【问题讨论】:
标签: domain-driven-design aggregateroot