在领域驱动设计中获取操作
本文关键字:获取 操作 | 更新日期: 2023-09-27 18:32:30
我有一个实体A,它与实体B和C有关系。
只有在事务中创建实体 A 时,才能创建实体 B 和 C。
因此,我只有一个 A 存储库.cs
当我在 A上下文中对实体 B 或 A 上下文外的 C 执行读取/获取操作时。
我把这些获取操作放在哪里?
在 A 上,假设
A 是聚合的根实体,假设您正在应用战术模式。
B 和 C 的获取操作属于 A。因此,在 A 中,您正在查看像 public B b{get;}
和 public C c{get;}
这样的代码。
根据聚合的定义,您需要从存储库(在本例中为 A)检索聚合,然后遍历对象图以获取本地实体(在本例中为 B 和 C)。
A a = aRepository.findBy(id);
B b = a.getB();
C c = a.getC();
一些基础设施问题必须得到解决。如果您的域模型也是您的持久模型,并且您的存储 B 和 C 与 A 的存储位于不同的表中,则可能需要一个支持延迟加载的 orm 框架。