Transactions 如何:使用单个事务跨越多个聚合的更新

Transactions 如何:使用单个事务跨越多个聚合的更新,transactions,neventstore,commondomain,Transactions,Neventstore,Commondomain,在我们的应用程序中,我们使用Jonathan Oliver的EventStore和CommonDomain。我们用来存储事件的数据库是SQL Server或Oracle 对于特定用例,我们需要通过一个命令更新多个聚合。我意识到,在CQR中,理想情况下一个命令应该只更新一个聚合,但在我们的例子中,一次更新多个实例是一个特定的要求 有没有一种不使用两阶段提交的简单方法使此操作原子化?如果有,如何实现 编辑:这个问题特定于EventStore框架的使用,可能还有CommonDomain框架的存储库。这

在我们的应用程序中,我们使用Jonathan Oliver的EventStore和CommonDomain。我们用来存储事件的数据库是SQL Server或Oracle

对于特定用例,我们需要通过一个命令更新多个聚合。我意识到,在CQR中,理想情况下一个命令应该只更新一个聚合,但在我们的例子中,一次更新多个实例是一个特定的要求

有没有一种不使用两阶段提交的简单方法使此操作原子化?如果有,如何实现


编辑:这个问题特定于EventStore框架的使用,可能还有CommonDomain框架的存储库。这不是关于事务处理或工作单元模式的一般问题,我很清楚这一点

您可以尝试使用工作单元。它将帮助您进行原子更改。这里有一个来自MSDN的链接,介绍了如何使用

实现它,我强烈建议将您的用例放在DDD论坛中,因为您需要影响两个聚合是非常可疑的。OTOH,一般的建议是再次使用域服务不是很有用。在技术层面上,您可能希望共享ConnectionScope或TransactionScope并不意味着分布式发送。