我需要使用CQRS实现一个项目,但是我对哪些实体获得相应的命令和查询类有疑问。
如果我有A,B和C类,那么A是我的聚合根,其他是我聚合中的子实体,哪些类应该有命令和查询类?
我的意思是,我应该有QueryA,QueryB和QueryC,还是应该只有QueryA,例如,它会使用延迟加载来带来子数据?
对于存储库,正如我对域模型的理解,我只考虑RepositoryA(对于我的聚合根)。
答案 0 :(得分:7)
查询不是每个聚合,而是基于每个视图。例如,假设您有一个客户帐户并想要显示
这将是三个查询,每个视图一个。并且通常没有像懒惰装载这样的痛苦的事情。您需要某些特定视图的信息,或者您不需要。
命令也不是每个聚合。您可以获得每个行为的命令。像OpenAccount,CloseAccount,MergeAccounts等