- 优化 fsql.Transaction 线程事务;

This commit is contained in:
2881099 2021-03-05 11:41:47 +08:00
parent 913b0ac5ce
commit 79c17d7f60
2 changed files with 16 additions and 4 deletions

View File

@ -138,6 +138,15 @@ namespace base_entity
BaseEntity.Initialization(fsql, () => _asyncUow.Value); BaseEntity.Initialization(fsql, () => _asyncUow.Value);
#endregion #endregion
for (var a = 0; a < 1000; a++)
{
fsql.Transaction(() =>
{
var tran = fsql.Ado.TransactionCurrentThread;
tran.Rollback();
});
}
fsql.UseJsonMap(); fsql.UseJsonMap();
var bid1 = 10; var bid1 = 10;
var list1 = fsql.Select<A>() var list1 = fsql.Select<A>()

View File

@ -74,17 +74,20 @@ namespace FreeSql.Internal.CommonProvider
} }
private void CommitTransaction(bool isCommit, Transaction2 tran, Exception rollbackException, string remark = null) 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); _trans.TryRemove(tran.Connection.LastGetThreadId, out var oldtran);
Exception ex = null; Exception ex = null;
if (string.IsNullOrEmpty(remark)) remark = isCommit ? "提交" : "回滚"; if (string.IsNullOrEmpty(remark)) remark = isCommit ? "提交" : "回滚";
try try
{
if (tran.Transaction.Connection != null) //用户自行 Commit、Rollback
{ {
Trace.WriteLine($"线程{tran.Connection.LastGetThreadId}事务{remark}"); Trace.WriteLine($"线程{tran.Connection.LastGetThreadId}事务{remark}");
if (isCommit) tran.Transaction.Commit(); if (isCommit) tran.Transaction.Commit();
else tran.Transaction.Rollback(); else tran.Transaction.Rollback();
} }
}
catch (Exception ex2) catch (Exception ex2)
{ {
ex = ex2; ex = ex2;