【问题标题】:Alternative to TransactionScope for Entity Framework when using Sql Azure across multiple connections跨多个连接使用 Sql Azure 时替代 TransactionScope for Entity Framework
【发布时间】:2012-06-22 21:25:56
【问题描述】:

我正在使用 EF 访问 Sql azure。在一种情况下,我需要对两个数据库进行更改,通常我会使用 TransactionScope 并将其升级为 MSDTC。现在Sql Azure 不支持MSDTC,所以不能使用TransactionScope。

还有其他方法可以做到这一点吗? (除了没有分布式事务并且必须以某种方式手动回滚状态)。

【问题讨论】:

    标签: entity-framework azure-sql-database


    【解决方案1】:

    在不使用 TransactionScope 类的情况下编写代码的一种方法是使用 SqlTransaction。 SqlTransaction 类不使用事务管理器,它在调用 Commit() 方法时将命令包装在本地事务中。

    我建议您查看Handling Transactions in SQL Azure 文章。

    【讨论】:

    • 我猜那篇文章回答它“这意味着 SQL Azure 不允许 Microsoft 分布式事务协调器 (MS DTC) 委托分布式事务处理。因此,您不能使用 ADO.NET 或MSDTC 提交或回滚跨多个 SQL Azure 数据库或 SQL Azure 和本地 SQL Server 组合的单个事务。"
    【解决方案2】:

    现在 Azure SQL DB 支持 TransactionScope。请参阅我对以下帖子的回答:TransactionScope() in Sql Azure。这也适用于您使用 EF 时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-16
      • 1970-01-01
      相关资源
      最近更新 更多