【问题标题】:TransactionScope() in Sql AzureSQL Azure 中的 TransactionScope()
【发布时间】:2010-04-09 03:29:55
【问题描述】:

Sql Azure 在执行插入时是否支持使用 TransactionScope()?下面是我正在尝试做的代码 sn-p。

using (var tx = new TransactionScope(TransactionScopeOption.RequiresNew, new TransactionOptions() { IsolationLevel = IsolationLevel.ReadCommitted }))
            {
                using (var db = MyDataContext.GetDataContext()) 
                {
                    try
                    {
                        MyObject myObject =  new MyObject()
                       {
                         SomeString = "Monday"

                       };
                        db.MyObjects.InsertOnSubmit(myObject);
                        db.SubmitChanges();
                        tx.Complete();
                    }
                    catch (Exception e)
                    {
                    }
                 }
             }

【问题讨论】:

    标签: transactionscope azure-sql-database


    【解决方案1】:

    我的理解是,它适用于事务范围仅绑定到一个连接的情况。很多时候,因为最好的做法是延迟打开连接并提前关闭。可能存在范围跨越两个连接的情况。 sql azure 不支持这些场景。

    它可能不起作用的一个例子是;以你为例;假设 MyDataContext.GetDataContext() 返回一个新的连接实例。

       using (var tx = new TransactionScope(TransactionScopeOption.RequiresNew, 
                                            new TransactionOptions() 
                                                {  IsolationLevel = IsolationLevel.ReadCommitted }
                                           ))
       {
           try{ 
               DoSomething(); //a method with using (var db = MyDataContext.GetDataContext())
               DoSomethingElse(); //another method with using (var db = MyDataContext.GetDataContext())
               tx.Complete();
           }
           catch { //Exception handler
           }
       }
    

    这些链接也应该给你一些指导

    【讨论】:

    • 第一个链接似乎失效了。
    【解决方案2】:

    Azure SQL 数据库分布式事务的快速更新:几天前,我们在 Azure SQL 数据库中引入了对分布式事务的支持。点亮该功能的特性称为弹性数据库事务。它侧重于使用 .NET 分布式事务 API(例如 TransactionScope)的场景。一旦安装了 .NET 框架的新 4.6.1 版本,这些 API 就会开始针对 Azure SQL 数据库工作。您可以在此处找到有关如何开始的更多信息:https://azure.microsoft.com/en-us/documentation/articles/sql-database-elastic-transactions-overview/

    请试一试!

    【讨论】:

    • 嗨 Torsten,这是否意味着我们可以在同一范围内使用围绕 ef 到 sql azure 和围绕 azure 服务总线的事务范围?
    • @Dewy:很遗憾,您不能在同一范围内编写 SQL Azure 和 Azure SB。
    • @TorstenGrabs 你知道这个限制是否仍然存在?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多