- 优化 移除 fsql.Transaction 线程事务超时机制;#323

This commit is contained in:
28810
2020-05-23 18:55:33 +08:00
parent ce3bd7da1d
commit b3352faef5
18 changed files with 33 additions and 74 deletions

View File

@ -35,7 +35,7 @@ namespace FreeSql.Internal.CommonProvider
public DbTransaction TransactionCurrentThread => _trans.TryGetValue(Thread.CurrentThread.ManagedThreadId, out var conn) && conn.Transaction?.Connection != null ? conn.Transaction : null;
public Aop.TraceBeforeEventArgs TransactionCurrentThreadAopBefore => _trans.TryGetValue(Thread.CurrentThread.ManagedThreadId, out var conn) && conn.Transaction?.Connection != null ? conn.AopBefore : null;
public void BeginTransaction(TimeSpan timeout, IsolationLevel? isolationLevel)
public void BeginTransaction(IsolationLevel? isolationLevel)
{
if (TransactionCurrentThread != null) return;
@ -48,7 +48,7 @@ namespace FreeSql.Internal.CommonProvider
try
{
conn = MasterPool.Get();
tran = new Transaction2(conn, isolationLevel == null ? conn.Value.BeginTransaction() : conn.Value.BeginTransaction(isolationLevel.Value), timeout);
tran = new Transaction2(conn, isolationLevel == null ? conn.Value.BeginTransaction() : conn.Value.BeginTransaction(isolationLevel.Value), TimeSpan.FromSeconds(60));
tran.AopBefore = before;
}
catch (Exception ex)
@ -107,15 +107,14 @@ namespace FreeSql.Internal.CommonProvider
if (_trans.TryGetValue(Thread.CurrentThread.ManagedThreadId, out var tran)) CommitTransaction(false, tran, ex);
}
public void Transaction(Action handler) => TransactionInternal(null, TimeSpan.FromSeconds(60), handler);
public void Transaction(TimeSpan timeout, Action handler) => TransactionInternal(null, timeout, handler);
public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => TransactionInternal(isolationLevel, timeout, handler);
public void Transaction(Action handler) => TransactionInternal(null, handler);
public void Transaction(IsolationLevel isolationLevel, Action handler) => TransactionInternal(isolationLevel, handler);
void TransactionInternal(IsolationLevel? isolationLevel, TimeSpan timeout, Action handler)
void TransactionInternal(IsolationLevel? isolationLevel, Action handler)
{
try
{
BeginTransaction(timeout, isolationLevel);
BeginTransaction(isolationLevel);
handler();
CommitTransaction();
}