首页 > 解决方案 > 如何加载聚合?

问题描述

在处理聚合的章节中关于 ddd 的文章/书籍中,我感觉从未讨论过一个主题:

如何重新加载聚合?

如果我以这些项目创建或更新的订单为例,我的不变量是相同的。假设我必须更新现有订单的商品的价格,所以我将从重新加载我的聚合开始。

但是我该怎么做呢?

  1. 使用诸如 automapper 之类的工具可以设置私有属性?

  2. 使用一个构造函数,该构造函数获取根聚合、子存储库的 id 并在此构造函数中分配私有属性?

  3. 就像我在创建一个新的一样,从头开始逐项重建所有内容?

标签: domain-driven-designupdatesaggregateroot

解决方案


就像我在创建一个新的一样,从头开始逐项重建所有内容?

通常是这个。

使用适当的通用机制从持久存储中加载数据:字节数组、json 文档、记录集等等。现在您已经在内存中拥有信息,将该信息复制到生成域模型对象的工厂中。

通常,您的设计将包含工厂模式的一些表现形式,该模式从其他信息创建聚合 - 您通常可以在存储库的外观后面使用类似的工厂来在重新加载时获得相同的结果。


推荐阅读