【问题标题】:Rollback Changes in MVC on Service Error C#在服务错误 C# 上回滚 MVC 中的更改
【发布时间】:2021-04-19 21:12:53
【问题描述】:

我有一个 MVC 控制器,它从多个服务调用多个不同的数据库。如果我有一个控制器方法需要调用 3 个不同服务的 3 个不同服务方法,如果最后一个服务方法失败,回滚的最佳实践是什么?此时,前两个服务调用将成功并保存在它们的 DBContexts 中,但由于它们是不同的 DBContexts,因此使用事务似乎不是一种选择。如果最后一个上下文失败,有哪些选项可以回滚其他上下文?

【问题讨论】:

    标签: c# transactions entity-framework-core dbcontext


    【解决方案1】:

    看起来你只有一个可用的选项:Saga 模式

    saga 模式使用一系列 本地交易。本地事务是原子工作 由传奇参与者表演。每个本地事务更新 数据库并发布消息或事件以触发下一个本地 传奇中的交易。如果本地事务失败,saga 执行一系列补偿事务以撤消更改 由前面的本地事务进行的。

    您可以阅读更详细的说明herehere

    .net 中有几个开箱即用的 sagas 实现,例如:
    MassTransit Sagas
    Chronicle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-07
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 2019-10-05
      • 2014-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多