使用SqlAzureExecutionStrategy而不是在用户启动的事务代码中使用,这是一个不错的选择吗?

问题描述

sqlAzureExecutionStrategy不能与用户启动的事务一起使用。在事务中执行代码后,它将立即引发异常。 MS解决方案是更改代码

var executionStrategy = new sqlAzureExecutionStrategy();

executionStrategy.Execute(
    () =>
    {
         myCode();
    });

但这不是一个选择,因为我有很多旧代码,我无法更改那么多代码,并且事务范围内的代码可能无法执行两次。

所以我的解决方案是在没有事务的情况下使用sqlAzureExecutionStrategy,如果代码在事务内(至少我在代码的某些部分中有重试),则使用DefaultExecutionStrategy

public class MyConfiguration : DbConfiguration
{
   public MyConfiguration()
  {
       SetExecutionStrategy("System.Data.sqlClient",() =>
          {
               IDbExecutionStrategy returValue;

               if (Transaction.Current == null)
                   returValue = new sqlAzureExecutionStrategy();
               else
                   returValue = new DefaultExecutionStrategy();

               return returValue;
          });
  }
}

我进行了一些快速测试,并且可以运行...但是我可以遇到问题吗?这是一个好主意还是一个可怕的主意?

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...