![]() |
1
26
请看这篇博文: Set based validation in the CQRS Architecture .
它解决了这个问题。在CQR中,这是一个复杂的问题。Bjarte建议查询报告数据库中现有的客户电子邮件地址,并发出一个补偿命令(例如
Adam D. 在评论中指出验证是一个领域问题。因此,您可以将ReservedMailAddress存储在一个服务中,该服务有助于创建客户,并由事件存储中的事件来补充。
|
![]() |
2
5
这个问题不必那么复杂:
使用数据库做它的好处,不要被ORM的限制所困扰。 |
![]() |
3
5
http://www.udidahan.com/2009/12/09/clarified-cqrs/ “此外,我们不需要访问查询存储来处理命令。任何需要的状态都应该由自治组件管理,这是自治的一部分。”
但是,如果您不想这样做,根据上面的陈述,我建议您将“ByEmail”方法添加到存储库中,然后使用它完成—但是,Udi可能会有更好的建议。。 |
![]() |
4
2
因此,在本例中,我们可以有一个名为CustomerMailMustBeUniquerule的类,它是在RegisterCustomerCommandExecutor即将执行命令“RegisterCustomerCommand”时由规则引擎获取的。此规则类负责查询数据库以查找电子邮件id是否存在,并通过提升无效标志停止执行。。。 |
![]() |
Tony Raimo · 域实体是否应该调用存储库? 7 年前 |
![]() |
Seb · DDD只读存储库返回“值对象” 7 年前 |
![]() |
tlt · 使用嵌套对象和大集合进行聚合根优化 7 年前 |
![]() |
PatrickSJ · DDD,状态对象/值对象 7 年前 |
![]() |
msmani · DDD更改聚合根id 7 年前 |
![]() |
DuskMcDusk · 逻辑和性能中的聚合根冲突 7 年前 |