blo*_*ead 21 domain-driven-design cqrs
据我所知,CQRS的基本原则之一是命令应该是以行为为中心的,并且在业务或UL中具有价值,而不是以数据为中心的,即CRUD.我们没有专注于更新客户,而是拥有像CustomerHasMoved这样的命令.如果你有CRUD屏幕可以纠正某些数据怎么办?例如,我们需要更改拼写错误的客户的名称.这在业务中并没有多大价值.这应该只是在UpdateCustomer命令的保护伞下吗?
Gre*_*ung 38
我只想在弹出时迅速对此发表评论.
重要的是要注意一些对象实际上是CRUD,没关系.我可能不太关心为什么名称在我的域名中发生变化,我将产品发送给人们并且只需要该数据来打印邮件标签.诀窍在于将行为设为默认值,然后一旦确定您真的不关心原因而反之亦然,那么它将恢复为CRUD界面.
格雷格
Jul*_*ien 18
实际上,更新客户名称可能有多种原因.正如你所说的那样,它可能拼写错误,或者......你可以结婚并改变你丈夫的名字.
如果您只有一个UpdateCustomer命令,那么您将失去原始意图,并且您将无法为每个命令执行不同的行为.如果名称是错误的,它可能就像更新数据库一样简单,而如果您的客户结婚,您可能需要通知营销部门,以便他们可以提供折扣.
如果您的实体纯粹是CRUD,那么您无意与修改属性相关联,那么可以使用UpdateEntityCommand.然后,您可以慢慢转换为更基于任务的内容