我正在读一本书“企业架构应用程序(Dino Esposito)”。它提出了一个关于验证的问题。
域模型可以有一个属性CanBeSaved,它调用域模型的calls ()方法。一切都很好,除了复杂的情况。例如,一个客户模型,它需要一个唯一的客户代码(例如。000542)。您只能通过数据库访问来检查这一点。将验证始终放在域服务中不是更好吗?因此,您只有一种方法来检查聚合是否处于有效状态?如果两者都使用,开发人员可以“忘记”为客户使用域服务验证。
发布于 2016-03-11 09:38:44
我发现拥有总是有效的实体比依赖外部验证对象更好。
尽管如此,唯一的检查是一个例外,因为它通常不是聚合本身可以自行决定的东西,您必须查看所有现有的聚合,以查看是否已经使用了该值。我所做的是在创建实体之前检查该值的可用性,并在数据库中添加一个约束,在持久化时验证唯一性。您还可以尝试找到包含所有实体的域概念,并使其成为具有所有代码列表并强制执行唯一性不变的聚合。
https://stackoverflow.com/questions/35934713
复制相似问题