0

假设我有一个CustomerEntity具有以下属性的基础

  • 姓名
  • 是首选

以最简单的形式采用 CQRS 我将获得以下服务

  • 客户指挥服务
  • 客户查询服务

如果在CustomerCommandService我调用UpgradeToPreferred(CustomerEntity)它背后的商店将更新并且任何查询都会反映这一点。到现在为止还挺好。

我的问题是如何将其同步回我拥有的本地实体?我已经UpgradeToPreferred()在服务上调用了该方法而不是在实体上,因此它不会反映在本地副本中,除非我查询CustomerQueryService并获取似乎有点多余的更新。

..还是我做错了?

编辑:

为了澄清,问题是。如果我正在通过命令服务修改存储中的实体,而不是直接在实体上调用命令或编辑它的属性,我应该如何处理我在内存中的实体的相同修改。

4

1 回答 1

2

这里很少出错。您的命令服务接受命令,而不是实体。因此,如果您想将该客户升级为首选,那么命令将是意图(makecustomerpreferred)和执行命令所需的数据(客户标识就足够了)。该服务将使用标识加载实体,并在实体上调用 makepreferred 行为。该实体将在内部进行更改。持久性会将其映射回数据库。因此,无需与数据库重新同步。

于 2012-10-12T22:12:07.277 回答