据我了解,CQRS的基本原则之一是命令应以行为为中心,并在业务或UL中具有值(value),而不是以数据为中心,即CRUD。我们没有关注更新客户,而是使用诸如CustomerHasMoved之类的命令。如果您有可以纠正某些数据的CRUD屏幕,该怎么办。例如,我们需要更改拼写错误的客户名称。这在业务中并没有太大值(value)。这应该只是在UpdateCustomer命令的保护下吗?
最佳答案
实际上,可能有多种原因来更新客户名称。正如您所说的那样,它可能拼写错误,或者...您可以结婚并将您的名字改成您丈夫的名字。
如果只有UpdateCustomer命令,则将失去原始意图,并且每个命令将无法具有不同的行为。如果这个名字叫错了,那可能就像更新数据库一样简单,而如果您的客户结婚了,您可能需要通知市场部门,以便他们可以提供折扣。
在您的实体纯粹是CRUD的情况下,没有可以与修改属性关联的意图,那么可以使用UpdateEntityCommand。然后,您可以缓慢过渡到更多基于任务的任务
关于domain-driven-design - CQRS和CRUD屏幕,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1883107/