假设我有一个基本的CustomerEntity
,它具有以下属性
以最简单的形式采用CQRS我会提供以下服务
如果在CustomerCommandService
我打电话UpgradeToPreferred(CustomerEntity)
,它背后的商店会更新,任何疑问都会反映出来。到目前为止一切都很好。
我的问题是如何将其同步回我所拥有的本地实体?我已经在服务上调用UpgradeToPreferred()
方法,而不是在实体上,因此它不会反映在本地副本中,除非我查询CustomerQueryService
并获得似乎有点多余的更新。
..或者我做错了吗?
编辑:
澄清一下,问题是。如果我正在通过命令服务修改存储中的实体而不直接在实体上调用命令或编辑它的属性,我应该如何对内存中的实体进行相同的修改。
答案 0 :(得分:2)
这里几乎没有错。您的命令服务需要命令,而不是实体。因此,如果您希望将该客户升级为首选,那么该命令将是intent(makecustomerpreferred)和执行命令所需的数据(客户标识就足够了)。该服务将使用标识加载实体,并在实体上调用makepreferred行为。该实体将在内部进行更改。持久性会将其映射回数据库。因此,无需与数据库重新同步。