CQRS和域模型

时间:2013-10-09 17:13:23

标签: domain-driven-design repository-pattern cqrs

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

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

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

对于存储库,正如我对域模型的理解,我只考虑RepositoryA(对于我的聚合根)。

1 个答案:

答案 0 :(得分:7)

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

  1. 帐户列表
  2. 包含保密信息的帐户详细信息(例如信用卡详细信息)
  3. 帐号详情,不含保密信息
  4. 这将是三个查询,每个视图一个。并且通常没有像懒惰装载这样的痛苦的事情。您需要某些特定视图的信息,或者您不需要。

    命令也不是每个聚合。您可以获得每个行为的命令。像OpenAccount,CloseAccount,MergeAccounts等