c# - TransactionScope 抛出异常 "This platform does not support distributed transactions."

标签 c# asp.net-core transactionscope

TransactionScope 抛出异常。我正在使用 ASP.NET Core 和 Core 3.0。

我在 Windows 本地遇到以下问题:“此平台不支持分布式事务。”

我想同步两个数据库,并想使用 TransactionScope 在两个数据库中获得一致的状态。

当我使用 AppService 和 Azure Sql 将它部署到 Azure 时,它​​工作正常。

通常,当我使用 .net core 3.0 检查此链接时,它应该可以正常工作。 https://learn.microsoft.com/de-de/dotnet/api/system.transactions.transactionscope?view=netcore-3.0

希望有人能帮助我。

using (var scope = new TransactionScope())
{

   -- database1
   using (SqlConnection connection = new SqlConnection(connectionString_DB1))
   {
      using (System.Data.SqlClient.SqlCommand cmd = connection.CreateCommand())
      {
         ....
         connection.Open();
         result = cmd.ExecuteNonQuery();
      }
   }

   --database2
   using (SqlConnection connection = new SqlConnection(connectionString_DB2))
   {
      using (System.Data.SqlClient.SqlCommand cmd = connection.CreateCommand())
      {
         ....
         connection.Open();
         result = cmd.ExecuteNonQuery();
      }
   }

   scope.Complete();
}

最佳答案

除了放置using外,在using connection之后添加Close方法调用。

我只是在使用 TransactionScope 时遇到同样的错误,同时显然连接到同一个数据库并放置 using。大多数答案都说 DisposeClose 是相同的,但似乎它们不是:从我从源代码中收集到的内容来看,Close方法显式返回到池的连接,而我找不到用于 Dispose 的相同代码。

关于c# - TransactionScope 抛出异常 "This platform does not support distributed transactions.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60954904/

相关文章:

c# - 我应该使用哪个版本的 csc.exe?

c# - 在 C# 中引用多个 Web 服务时解决类型歧义

asp.net-core - 将 SignalR 添加到现有 IdentityServer4 授权

.net - "Transaction context in use by another session"是什么原因

entity-framework-4 - Entity Framework 中的多个SaveChanges调用

c# - 隐式类型数组 : why we can't set array size explicitly?

c# - 关于Task、async 和await 的多线程

c# - Appsetting.json 读取 Controller 类中键的值,空白?

razor - 如何将 razor View 分发到 .NET Core 中的另一个应用程序

c# - 事务范围因 Oracle : Connection is already part of a local or a distributed transaction 中的 BeginTransaction 而失败