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) {