【问题标题】:LightSwitch: Distributed transactions on AzureLightSwitch:Azure 上的分布式事务
【发布时间】:2017-02-14 08:17:44
【问题描述】:

亲爱的,

我有一些场景,我必须在 LightSwitch 的内部数据库上执行更新,并在 ONE TRANSACTION 中调用保存管道中的一些 SQL 存储过程,这样如果 LS 保存管道中发生错误,那么我的存储过程调用是回滚。

推荐的方法是在 SaveChanges_Executing 事件中设置环境事务,并在 SaveChanges_Executed 和 SaveChanges_ExecuteFailed 事件中处理它。如本文所述http://www.codemag.com/Article/1103071

但这有两个致命的问题:

  1. 当我在 Azure 上发布应用程序时它不起作用,因为那里不支持分布式事务。
  2. 当我尝试使用 ServerApplicationContext 保存对 ApplicationData 源的更改时,它也会引发错误。错误是这样的:EnlistTransaction 上的基础提供程序失败

有没有人找到一种更简洁的方法来处理 LightSwitch 中的事务,该方法既适用于 Azure,也适用于 ServerApplicationContext?

非常感谢

【问题讨论】:

    标签: azure-sql-database visual-studio-lightswitch distributed-transactions lightswitch-2013 lightswitch-2012


    【解决方案1】:

    目前,使用 MSDTC 的分布式事务不适用于 SQL Azure。但是,它们可以在 Azure 中运行的 VM 中针对 SQL Server 正常工作。 MSDTC 通常与在域控制器上运行相关联,这在公共云环境中没有意义。可能需要一个替代的 DTC,但这不是今天公开宣布的内容。

    我不认为 Lightswitch 是这里的主要问题(尽管它可能还有一些超出我所描述的其他问题)。

    我希望至少可以解释为什么它今天不起作用 - 我希望我有一个更好的答案给你,但现在不可能。正在使用的“变通办法”是构建可以对每一侧(或不是)发生的提交具有弹性并从失败案例中恢复的应用程序。

    【讨论】:

      猜你喜欢
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      • 1970-01-01
      • 2013-10-05
      • 2023-03-29
      • 2011-02-03
      • 2011-10-23
      相关资源
      最近更新 更多