From b3352faef5a8df4697918667fddc77527d9491d7 Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Sat, 23 May 2020 18:55:33 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BC=98=E5=8C=96=20=E7=A7=BB=E9=99=A4=20f?= =?UTF-8?q?sql.Transaction=20=E7=BA=BF=E7=A8=8B=E4=BA=8B=E5=8A=A1=E8=B6=85?= =?UTF-8?q?=E6=97=B6=E6=9C=BA=E5=88=B6=EF=BC=9B#323?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DbContext/DbContextScopedFreeSql.cs | 3 +-- FreeSql/FreeSql.xml | 26 +++++-------------- FreeSql/Interface/IAdo.cs | 11 ++------ FreeSql/Interface/IFreeSql.cs | 15 ++++------- .../AdoProvider/AdoProviderTransaction.cs | 13 +++++----- .../FreeSql.Provider.Dameng/DamengProvider.cs | 3 +-- .../MsAccessProvider.cs | 3 +-- .../FreeSql.Provider.MySql/MySqlProvider.cs | 3 +-- .../Dameng/OdbcDamengProvider.cs | 3 +-- .../Default/OdbcProvider.cs | 3 +-- .../MySql/OdbcMySqlProvider.cs | 3 +-- .../Oracle/OdbcOracleProvider.cs | 3 +-- .../PostgreSQL/OdbcPostgreSQLProvider.cs | 3 +-- .../SqlServer/OdbcSqlServerProvider.cs | 3 +-- .../FreeSql.Provider.Oracle/OracleProvider.cs | 3 +-- .../PostgreSQLProvider.cs | 3 +-- .../SqlServerProvider.cs | 3 +-- .../FreeSql.Provider.Sqlite/SqliteProvider.cs | 3 +-- 18 files changed, 33 insertions(+), 74 deletions(-) diff --git a/FreeSql.DbContext/DbContext/DbContextScopedFreeSql.cs b/FreeSql.DbContext/DbContext/DbContextScopedFreeSql.cs index 3aef53e4..adeaab0d 100644 --- a/FreeSql.DbContext/DbContext/DbContextScopedFreeSql.cs +++ b/FreeSql.DbContext/DbContext/DbContextScopedFreeSql.cs @@ -30,8 +30,7 @@ namespace FreeSql public void Dispose() { } public void Transaction(Action handler) => _originalFsql.Transaction(handler); - public void Transaction(TimeSpan timeout, Action handler) => _originalFsql.Transaction(timeout, handler); - public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => _originalFsql.Transaction(isolationLevel, timeout, handler); + public void Transaction(IsolationLevel isolationLevel, Action handler) => _originalFsql.Transaction(isolationLevel, handler); public ISelect Select() where T1 : class { diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index f4fd5b54..5545a967 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -2257,25 +2257,17 @@ - - 开启事务(不支持异步),60秒未执行完成(可能)被其他线程事务自动提交 - - 事务体 () => {} - - 开启事务(不支持异步) - 超时,未执行完成(可能)被其他线程事务自动提交 事务体 () => {} - + 开启事务(不支持异步) 事务体 () => {} - 超时,未执行完成(可能)被其他线程事务自动提交 @@ -3829,24 +3821,18 @@ - 开启事务(不支持异步),60秒未执行完成(可能)被其他线程事务自动提交 + 开启事务(不支持异步) + v1.5.0 关闭了线程事务超时自动提交的机制 事务体 () => {} - + - 开启事务(不支持异步) - - 超时,未执行完成(可能)被其他线程事务自动提交 - 事务体 () => {} - - - - 开启事务(不支持异步) + 开启事务(不支持异步) + v1.5.0 关闭了线程事务超时自动提交的机制 事务体 () => {} - 超时,未执行完成(可能)被其他线程事务自动提交 diff --git a/FreeSql/Interface/IAdo.cs b/FreeSql/Interface/IAdo.cs index b520f690..6db5bbd1 100644 --- a/FreeSql/Interface/IAdo.cs +++ b/FreeSql/Interface/IAdo.cs @@ -39,23 +39,16 @@ namespace FreeSql #region 事务 /// - /// 开启事务(不支持异步),60秒未执行完成(可能)被其他线程事务自动提交 + /// 开启事务(不支持异步) /// /// 事务体 () => {} void Transaction(Action handler); /// /// 开启事务(不支持异步) /// - /// 超时,未执行完成(可能)被其他线程事务自动提交 - /// 事务体 () => {} - void Transaction(TimeSpan timeout, Action handler); - /// - /// 开启事务(不支持异步) - /// /// /// 事务体 () => {} - /// 超时,未执行完成(可能)被其他线程事务自动提交 - void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler); + void Transaction(IsolationLevel isolationLevel, Action handler); /// /// 当前线程的事务 /// diff --git a/FreeSql/Interface/IFreeSql.cs b/FreeSql/Interface/IFreeSql.cs index e2e973a9..bb42ba92 100644 --- a/FreeSql/Interface/IFreeSql.cs +++ b/FreeSql/Interface/IFreeSql.cs @@ -101,23 +101,18 @@ public interface IFreeSql : IDisposable IDelete Delete(object dywhere) where T1 : class; /// - /// 开启事务(不支持异步),60秒未执行完成(可能)被其他线程事务自动提交 + /// 开启事务(不支持异步) + /// v1.5.0 关闭了线程事务超时自动提交的机制 /// /// 事务体 () => {} void Transaction(Action handler); /// - /// 开启事务(不支持异步) - /// - /// 超时,未执行完成(可能)被其他线程事务自动提交 - /// 事务体 () => {} - void Transaction(TimeSpan timeout, Action handler); - /// - /// 开启事务(不支持异步) + /// 开启事务(不支持异步) + /// v1.5.0 关闭了线程事务超时自动提交的机制 /// /// /// 事务体 () => {} - /// 超时,未执行完成(可能)被其他线程事务自动提交 - void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler); + void Transaction(IsolationLevel isolationLevel, Action handler); /// /// 数据库访问对象 diff --git a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderTransaction.cs b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderTransaction.cs index 251dd2bc..41c4f539 100644 --- a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderTransaction.cs +++ b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderTransaction.cs @@ -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(); } diff --git a/Providers/FreeSql.Provider.Dameng/DamengProvider.cs b/Providers/FreeSql.Provider.Dameng/DamengProvider.cs index c6903675..64b83116 100644 --- a/Providers/FreeSql.Provider.Dameng/DamengProvider.cs +++ b/Providers/FreeSql.Provider.Dameng/DamengProvider.cs @@ -46,8 +46,7 @@ namespace FreeSql.Dameng internal CommonExpression InternalCommonExpression { get; } public void Transaction(Action handler) => Ado.Transaction(handler); - public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler); - public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler); + public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler); public GlobalFilter GlobalFilter { get; } = new GlobalFilter(); diff --git a/Providers/FreeSql.Provider.MsAccess/MsAccessProvider.cs b/Providers/FreeSql.Provider.MsAccess/MsAccessProvider.cs index 1160eec7..9632ec87 100644 --- a/Providers/FreeSql.Provider.MsAccess/MsAccessProvider.cs +++ b/Providers/FreeSql.Provider.MsAccess/MsAccessProvider.cs @@ -45,8 +45,7 @@ namespace FreeSql.MsAccess internal CommonExpression InternalCommonExpression { get; } public void Transaction(Action handler) => Ado.Transaction(handler); - public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler); - public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler); + public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler); public GlobalFilter GlobalFilter { get; } = new GlobalFilter(); diff --git a/Providers/FreeSql.Provider.MySql/MySqlProvider.cs b/Providers/FreeSql.Provider.MySql/MySqlProvider.cs index c1d533fc..8ebe5666 100644 --- a/Providers/FreeSql.Provider.MySql/MySqlProvider.cs +++ b/Providers/FreeSql.Provider.MySql/MySqlProvider.cs @@ -72,8 +72,7 @@ namespace FreeSql.MySql internal CommonExpression InternalCommonExpression { get; } public void Transaction(Action handler) => Ado.Transaction(handler); - public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler); - public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler); + public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler); public GlobalFilter GlobalFilter { get; } = new GlobalFilter(); diff --git a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengProvider.cs b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengProvider.cs index 3adf7d01..3644623c 100644 --- a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengProvider.cs +++ b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengProvider.cs @@ -45,8 +45,7 @@ namespace FreeSql.Odbc.Dameng internal CommonExpression InternalCommonExpression { get; } public void Transaction(Action handler) => Ado.Transaction(handler); - public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler); - public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler); + public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler); public GlobalFilter GlobalFilter { get; } = new GlobalFilter(); diff --git a/Providers/FreeSql.Provider.Odbc/Default/OdbcProvider.cs b/Providers/FreeSql.Provider.Odbc/Default/OdbcProvider.cs index 6459f13f..138487cb 100644 --- a/Providers/FreeSql.Provider.Odbc/Default/OdbcProvider.cs +++ b/Providers/FreeSql.Provider.Odbc/Default/OdbcProvider.cs @@ -86,8 +86,7 @@ namespace FreeSql.Odbc.Default internal CommonExpression InternalCommonExpression { get; } public void Transaction(Action handler) => Ado.Transaction(handler); - public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler); - public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler); + public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler); public GlobalFilter GlobalFilter { get; } = new GlobalFilter(); diff --git a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlProvider.cs b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlProvider.cs index e59064d9..2d97a4d2 100644 --- a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlProvider.cs +++ b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlProvider.cs @@ -50,8 +50,7 @@ namespace FreeSql.Odbc.MySql internal CommonExpression InternalCommonExpression { get; } public void Transaction(Action handler) => Ado.Transaction(handler); - public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler); - public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler); + public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler); public GlobalFilter GlobalFilter { get; } = new GlobalFilter(); diff --git a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleProvider.cs b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleProvider.cs index 1a35a2d2..fc9449fc 100644 --- a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleProvider.cs +++ b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleProvider.cs @@ -51,8 +51,7 @@ namespace FreeSql.Odbc.Oracle internal CommonExpression InternalCommonExpression { get; } public void Transaction(Action handler) => Ado.Transaction(handler); - public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler); - public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler); + public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler); public GlobalFilter GlobalFilter { get; } = new GlobalFilter(); diff --git a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLProvider.cs b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLProvider.cs index 181803a4..041bb2f9 100644 --- a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLProvider.cs +++ b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLProvider.cs @@ -49,8 +49,7 @@ namespace FreeSql.Odbc.PostgreSQL internal CommonExpression InternalCommonExpression { get; } public void Transaction(Action handler) => Ado.Transaction(handler); - public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler); - public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler); + public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler); public GlobalFilter GlobalFilter { get; } = new GlobalFilter(); diff --git a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerProvider.cs b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerProvider.cs index 62ec8650..ffe9ad80 100644 --- a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerProvider.cs +++ b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerProvider.cs @@ -57,8 +57,7 @@ namespace FreeSql.Odbc.SqlServer internal CommonExpression InternalCommonExpression { get; } public void Transaction(Action handler) => Ado.Transaction(handler); - public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler); - public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler); + public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler); public GlobalFilter GlobalFilter { get; } = new GlobalFilter(); diff --git a/Providers/FreeSql.Provider.Oracle/OracleProvider.cs b/Providers/FreeSql.Provider.Oracle/OracleProvider.cs index 9b5716cf..f65b8200 100644 --- a/Providers/FreeSql.Provider.Oracle/OracleProvider.cs +++ b/Providers/FreeSql.Provider.Oracle/OracleProvider.cs @@ -46,8 +46,7 @@ namespace FreeSql.Oracle internal CommonExpression InternalCommonExpression { get; } public void Transaction(Action handler) => Ado.Transaction(handler); - public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler); - public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler); + public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler); public GlobalFilter GlobalFilter { get; } = new GlobalFilter(); diff --git a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLProvider.cs b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLProvider.cs index bb1944bb..839b9421 100644 --- a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLProvider.cs +++ b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLProvider.cs @@ -99,8 +99,7 @@ namespace FreeSql.PostgreSQL internal CommonExpression InternalCommonExpression { get; } public void Transaction(Action handler) => Ado.Transaction(handler); - public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler); - public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler); + public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler); public GlobalFilter GlobalFilter { get; } = new GlobalFilter(); diff --git a/Providers/FreeSql.Provider.SqlServer/SqlServerProvider.cs b/Providers/FreeSql.Provider.SqlServer/SqlServerProvider.cs index 2eec51aa..0b130c33 100644 --- a/Providers/FreeSql.Provider.SqlServer/SqlServerProvider.cs +++ b/Providers/FreeSql.Provider.SqlServer/SqlServerProvider.cs @@ -58,8 +58,7 @@ namespace FreeSql.SqlServer internal CommonExpression InternalCommonExpression { get; } public void Transaction(Action handler) => Ado.Transaction(handler); - public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler); - public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler); + public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler); public GlobalFilter GlobalFilter { get; } = new GlobalFilter(); diff --git a/Providers/FreeSql.Provider.Sqlite/SqliteProvider.cs b/Providers/FreeSql.Provider.Sqlite/SqliteProvider.cs index 2c18f9b5..ddb71c02 100644 --- a/Providers/FreeSql.Provider.Sqlite/SqliteProvider.cs +++ b/Providers/FreeSql.Provider.Sqlite/SqliteProvider.cs @@ -47,8 +47,7 @@ namespace FreeSql.Sqlite internal CommonExpression InternalCommonExpression { get; } public void Transaction(Action handler) => Ado.Transaction(handler); - public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler); - public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler); + public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler); public GlobalFilter GlobalFilter { get; } = new GlobalFilter();