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

Alternative to TransactionScope of System.Transaction assembly in .net core framework

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

问题:

是否有适用于 .net 核心框架的替代事务处理?我尝试使用 Castle.Transactions 作为替代方案,目前也不支持。

更新 2 .NET Core 2.0 现已发布。你可以使用这个 API。参见 https://docs.microsoft.com/en-us/dotnet/api/system.transactions.transactionscope?view=netcore-2.0

更新 System.Transactions 将在 网络核心 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();
            }
        }

只是想在这里发表评论,以防有人在研究这个问题时遇到这个 post。我使用 Dapper 运行 在 .net core 2.1 上 运行domly,默认情况下包括 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>