domain-driven-design - 如何加载聚合?
问题描述
在处理聚合的章节中关于 ddd 的文章/书籍中,我感觉从未讨论过一个主题:
如何重新加载聚合?
- 要么太明显了,说出来也没用
- 要么这不是正确的做法
- 要么我不明白
如果我以这些项目创建或更新的订单为例,我的不变量是相同的。假设我必须更新现有订单的商品的价格,所以我将从重新加载我的聚合开始。
但是我该怎么做呢?
使用诸如 automapper 之类的工具可以设置私有属性?
使用一个构造函数,该构造函数获取根聚合、子存储库的 id 并在此构造函数中分配私有属性?
就像我在创建一个新的一样,从头开始逐项重建所有内容?
解决方案
就像我在创建一个新的一样,从头开始逐项重建所有内容?
通常是这个。
使用适当的通用机制从持久存储中加载数据:字节数组、json 文档、记录集等等。现在您已经在内存中拥有信息,将该信息复制到生成域模型对象的工厂中。
通常,您的设计将包含工厂模式的一些表现形式,该模式从其他信息创建聚合 - 您通常可以在存储库的外观后面使用类似的工厂来在重新加载时获得相同的结果。
推荐阅读
- javascript - 如何在 Phaser 3 中每分钟运行一个函数?
- android - 我的硬件是否冲突,导致 AVD 非常慢?
- docker - 如何通过查找纱线来修复 docker 容器中的错误?
- python - 使用像 nltk 这样的 Python 库缩短句子
- amazon-web-services - 如何在 dynamodb 的过滤器表达式中添加日期范围
- amazon-web-services - AWS Sagemaker,如何将现有的本地 jupyter notebook 与 ML 算法连接到 AWS
- python - 参数未传递给 Scipy solve_ivp
- reactjs - 在 React.js 中创建范围滑块
- curl - Apache Camel 与 Spring Boot 集成 REST API
- linux - linux虚拟内存附加/分离信号