From 79c17d7f609a0d06cd4fabc5a39d8b3773f6f3c6 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Fri, 5 Mar 2021 11:41:47 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BC=98=E5=8C=96=20fsql.Transaction=20?= =?UTF-8?q?=E7=BA=BF=E7=A8=8B=E4=BA=8B=E5=8A=A1=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Examples/base_entity/Program.cs | 9 +++++++++ .../AdoProvider/AdoProviderTransaction.cs | 11 +++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index 8640cc8e..366f7640 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -138,6 +138,15 @@ namespace base_entity BaseEntity.Initialization(fsql, () => _asyncUow.Value); #endregion + for (var a = 0; a < 1000; a++) + { + fsql.Transaction(() => + { + var tran = fsql.Ado.TransactionCurrentThread; + tran.Rollback(); + }); + } + fsql.UseJsonMap(); var bid1 = 10; var list1 = fsql.Select() diff --git a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderTransaction.cs b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderTransaction.cs index 394c54eb..a936f767 100644 --- a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderTransaction.cs +++ b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderTransaction.cs @@ -74,16 +74,19 @@ namespace FreeSql.Internal.CommonProvider } private void CommitTransaction(bool isCommit, Transaction2 tran, Exception rollbackException, string remark = null) { - if (tran == null || tran.Transaction == null || tran.Transaction.Connection == null) return; + if (tran == null || tran.Transaction == null || tran.Connection == null) return; _trans.TryRemove(tran.Connection.LastGetThreadId, out var oldtran); Exception ex = null; if (string.IsNullOrEmpty(remark)) remark = isCommit ? "提交" : "回滚"; try { - Trace.WriteLine($"线程{tran.Connection.LastGetThreadId}事务{remark}"); - if (isCommit) tran.Transaction.Commit(); - else tran.Transaction.Rollback(); + if (tran.Transaction.Connection != null) //用户自行 Commit、Rollback + { + Trace.WriteLine($"线程{tran.Connection.LastGetThreadId}事务{remark}"); + if (isCommit) tran.Transaction.Commit(); + else tran.Transaction.Rollback(); + } } catch (Exception ex2) {