替代.net核心框架中System.Transaction程序集的TransactionScope

时间:2016-02-28 18:03:08

标签: transactions asp.net-core asp.net-core-mvc

System.Transaction程序集目前不是.net核心框架的一部分(参见https://github.com/dotnet/corefx/issues/2949)。在我的应用程序(asp.net core mvc)中,我需要使用TransactionScope进行事务处理。

问题:

是否存在可与.net核心框架一起使用的备用事务处理?我曾尝试使用Castle.Transactions作为替代方案,目前也不支持。

2 个答案:

答案 0 :(得分:17)

更新2 .NET Core 2.0现已推出。您可以使用此API。见https://docs.microsoft.com/en-us/dotnet/api/system.transactions.transactionscope?view=netcore-2.0

<强>更新 System.Transactions将在 NET Core 2.0。有关即将发布的版本的详细信息,请参阅https://github.com/dotnet/core/blob/master/roadmap.md

原始回答

System.Transactions(或环境事务)未在.NET Core 1.0.0中实现,但可能在将来的版本中实现。

您可以使用显式交易解决此问题。

        using (var connection = new SqlConnection(connectionString))
        {
            connection.Open();

            using (var transaction = connection.BeginTransaction())
            {
               // transaction.Commit();
               // transaction.Rollback();
            }
        }

答案 1 :(得分:4)

只是想在这里发表评论,以防任何人在研究此错误时被此帖子所困扰。我在使用Dapper的.net core 2.1上随机遇到了此问题,默认情况下包含System.Data.SqlClient 4.5.0。通过nuget独立添加版本System.Data.SqlClient 4.5.1的工作。因此,似乎该问题已从4.5.1开始修复。

以下是我的csproj文件的相关部分:

<ItemGroup>
   <PackageReference Include="Dapper" Version="1.50.5" />
   <PackageReference Include="System.Data.SqlClient" Version="4.5.1" />
</ItemGroup>