【问题标题】:Enlisting in Ambient transactions is not supported using TransactionScope in asp.net core 2 app在 asp.net core 2 应用程序中使用 TransactionScope 不支持在环境事务中登记
【发布时间】:2018-10-27 04:53:07
【问题描述】:

在 TransactionScope 中打开 sql 连接时,会出现“不支持在环境事务中登记”错误。我在 asp.net core 2 应用程序中使用 ado.net。

        using (var ts = new TransactionScope())
        {
            try
            {
                Connection.Open();
                repository.Insert(entity);                    
                ts.Complete();
            }

            catch (Exception ex)
            {
                ts.Dispose();
            }
            finally
            {
                Connection.Close();
            }
        }

【问题讨论】:

    标签: ado.net asp.net-core-2.0


    【解决方案1】:

    如果您在使用 .Net Standard 时遇到此问题,您可以添加最近对 System.Data.SqlClient 的引用,此问题将消失。

    【讨论】:

    • 已确认,我正在使用 .Net Core 2.2,并在项目中安装最新的 NuGet 包 System.Data.SqlClient(撰写本文时为 4.8.0)并使用 SQL 访问代码解决了问题.
    【解决方案2】:

    将 Microsoft.AspNetCore.All 的 PackageReference 替换为单独的包引用,然后将 PackageReference 添加到“System.Data.SqlClient”,Version="4.3.1"。

    这是对我有用的解决方案(供参考)的链接 (Dapper is throwing System.Data.SqlClient.SqlConnection exception after upgrading System.Data.SqlClient to version 4.5.0-preview2)。

    这适用于 System.Data.SqlClient 版本高达 4.3.1.,4.4.0 及更高版本给出了相同的错误。

    【讨论】:

      猜你喜欢
      • 2015-10-11
      • 1970-01-01
      • 2017-09-23
      • 1970-01-01
      • 2015-03-27
      • 1970-01-01
      • 2017-12-18
      • 1970-01-01
      • 2020-01-29
      相关资源
      最近更新 更多