我是DDD和CQRS模式的新手,想请教您一个问题:如何验证领域实体呢?让我们以常见的Order->OrderLine为例。在这个案例中,Order是AR(聚合根),因此,在AR中验证业务规则可以保持一致性。但是,如果需要使用Order聚合之外的数据来验证某些业务规则,该怎么办呢?我采用CQRS方法,认为使用ReadModel获取所需数据进行业务规则验证不失为一种好方法。您认为呢?
是的,使用读模型进行命令验证。我称之为“命令上下文”-基于当前世界状态,命令可能有效或无效。在CQRS中,世界的当前状态在您的读模型中表示。用户根据它做出决策,应该发出哪些命令。
您还可以考虑各种方式来指导用户决策,以便他不会发出无效命令(如果用户名不唯一,则提前警告等)。