2

逗人分布式事务,的LightSwitch:在Azure上

我的情况,我要的LightSwitch的内部数据库上执行更新,并呼吁在保存管道的一些SQL存储过程都在一个事务中,这样,如果一个错误发生在LS保存管道中,然后我的存储过程调用被回滚。

这样做的推荐方法是在SaveChanges_Executing事件中设置环境事务,并将其置于SaveChanges_Executed和SaveChanges_ExecuteFailed事件中。正如本文章http://www.codemag.com/Article/1103071

描述但是,这里有两个致命的问题:

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

有没有人发现了一个更清洁的方式来处理LightSwitch中的作品都在Azure上,并通过ServerApplicationContext交易?

非常感谢

回答

2

目前,利用MSDTC分布式事务不会对SQL Azure的工作。但是,它们在Azure中运行的虚拟机中可以很好地对付SQL Server。一般来说,MSDTC绑定在域控制器上运行,这在公共云环境中没有意义。可能需要一种替代DTC,但这不是今天公开宣布的事情。

我不认为Lightswitch是这里的主要问题(虽然也许它有一些超出我所描述的额外问题)。

我希望至少解释为什么今天不行 - 我希望我对你有更好的答案,但现在不可能。正在使用的“解决方法”是构建能够对每一方(或不是)进行的提交具有弹性的应用程序,并从失败的案例中进行恢复。