在 asp.net core 2 应用程序中使用 TransactionScope 不支持登记环境事务

sha*_*ran 2 ado.net asp.net-core-2.0

在 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();
            }
        }
Run Code Online (Sandbox Code Playgroud)

ran*_*ons 5

如果你在使用 .Net Standard 时遇到这个问题,你可以添加一个最近对 System.Data.SqlClient 的引用,这个问题就会消失。


小智 2

将 PackageReference 替换为 Microsoft.AspNetCore.All 与各个包引用,然后将 PackageReference 添加到“System.Data.SqlClient”,Version=“4.3.1”。

这是对我有用的解决方案的链接(仅供参考)(Dapper 在将 System.Data.SqlClient 升级到版本 4.5.0-preview2 后抛出 System.Data.SqlClient.SqlConnection 异常)。

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