Skip to content

Commit 79c17d7

Browse files
committed
- 优化 fsql.Transaction 线程事务;
1 parent 913b0ac commit 79c17d7

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

Examples/base_entity/Program.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,15 @@ static void Main(string[] args)
138138
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
139139
#endregion
140140

141+
for (var a = 0; a < 1000; a++)
142+
{
143+
fsql.Transaction(() =>
144+
{
145+
var tran = fsql.Ado.TransactionCurrentThread;
146+
tran.Rollback();
147+
});
148+
}
149+
141150
fsql.UseJsonMap();
142151
var bid1 = 10;
143152
var list1 = fsql.Select<A>()

FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderTransaction.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,16 +74,19 @@ private void CommitTimeoutTransaction()
7474
}
7575
private void CommitTransaction(bool isCommit, Transaction2 tran, Exception rollbackException, string remark = null)
7676
{
77-
if (tran == null || tran.Transaction == null || tran.Transaction.Connection == null) return;
77+
if (tran == null || tran.Transaction == null || tran.Connection == null) return;
7878
_trans.TryRemove(tran.Connection.LastGetThreadId, out var oldtran);
7979

8080
Exception ex = null;
8181
if (string.IsNullOrEmpty(remark)) remark = isCommit ? "提交" : "回滚";
8282
try
8383
{
84-
Trace.WriteLine($"线程{tran.Connection.LastGetThreadId}事务{remark}");
85-
if (isCommit) tran.Transaction.Commit();
86-
else tran.Transaction.Rollback();
84+
if (tran.Transaction.Connection != null) //用户自行 Commit、Rollback
85+
{
86+
Trace.WriteLine($"线程{tran.Connection.LastGetThreadId}事务{remark}");
87+
if (isCommit) tran.Transaction.Commit();
88+
else tran.Transaction.Rollback();
89+
}
8790
}
8891
catch (Exception ex2)
8992
{

0 commit comments

Comments
 (0)