在每个聚合内部,必须保证一致性。在存储库中很容易做到这一点,因为我总是可以使用数据库或框架中的事务。我对存储库之外发生的事情表示怀疑。一项服务可能需要使用多个聚合来处理请求。在服务中的处理过程中或聚合持续存在时可能会出现问题。
如果在服务处理过程中出现问题,我可以引发异常。这样操作将是原子的。这是我的第一个担忧。这是一个好习惯吗?我看到的问题是很难从中恢复过来。没有简单的方法可以让所有聚合保持失败操作之前的状态。
我遇到的另一个问题是,如果其中一个聚合无法持久化,会发生什么。如何保证信息的一致性?我必须在存储库之外使用数据库事务吗?我在想它可能不是最好的解决方案,因为我在设计域模型时不应该考虑数据库。