在领域驱动设计中获取操作

本文关键字:获取 操作 | 更新日期: 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 框架。