0

我需要使用 CQRS 实现一个项目,但是我对哪些实体获得相应的命令和查询类感到怀疑。

如果我有 A、B 和 C 类,因为 A 是我的聚合根,而其他是我聚合中的子实体,那么哪些类应该有命令和查询类?

我的意思是,我应该有 QueryA、QueryB 和 QueryC,还是应该只有 QueryA,例如,它将使用延迟加载带来子数据?

对于存储库,作为我对域模型的理解,我只考虑一个 RepositoryA (对于我的聚合根)。

4

1 回答 1

7

查询不是按聚合的,而是基于每个视图的。例如,假设您有一个客户帐户并希望显示

  1. 帐户列表
  2. 包含机密信息的帐户详细信息(例如信用卡详细信息)
  3. 没有机密信息的帐户详细信息

这将是三个查询,每个视图一个。而且通常没有像延迟加载这样痛苦的事情。要么你需要一些特定视图的信息,要么你不需要。

命令也不是每个聚合的。您将对每种行为都有一个命令。像 OpenAccount、CloseAccount、MergeAccounts 等。

于 2013-10-09T19:50:32.757 回答