mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 09:15:27 +08:00 
			
		
		
		
	- 优化 移除 fsql.Transaction 线程事务超时机制;#323
This commit is contained in:
		@@ -30,8 +30,7 @@ namespace FreeSql
 | 
				
			|||||||
        public void Dispose() { }
 | 
					        public void Dispose() { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void Transaction(Action handler) => _originalFsql.Transaction(handler);
 | 
					        public void Transaction(Action handler) => _originalFsql.Transaction(handler);
 | 
				
			||||||
        public void Transaction(TimeSpan timeout, Action handler) => _originalFsql.Transaction(timeout, handler);
 | 
					        public void Transaction(IsolationLevel isolationLevel, Action handler) => _originalFsql.Transaction(isolationLevel, handler);
 | 
				
			||||||
        public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => _originalFsql.Transaction(isolationLevel, timeout, handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public ISelect<T1> Select<T1>() where T1 : class
 | 
					        public ISelect<T1> Select<T1>() where T1 : class
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2257,25 +2257,17 @@
 | 
				
			|||||||
            </summary>
 | 
					            </summary>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
        <member name="M:FreeSql.IAdo.Transaction(System.Action)">
 | 
					        <member name="M:FreeSql.IAdo.Transaction(System.Action)">
 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            开启事务(不支持异步),60秒未执行完成(可能)被其他线程事务自动提交
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="handler">事务体 () => {}</param>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.Transaction(System.TimeSpan,System.Action)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
            开启事务(不支持异步)
 | 
					            开启事务(不支持异步)
 | 
				
			||||||
            </summary>
 | 
					            </summary>
 | 
				
			||||||
            <param name="timeout">超时,未执行完成(可能)被其他线程事务自动提交</param>
 | 
					 | 
				
			||||||
            <param name="handler">事务体 () => {}</param>
 | 
					            <param name="handler">事务体 () => {}</param>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
        <member name="M:FreeSql.IAdo.Transaction(System.Data.IsolationLevel,System.TimeSpan,System.Action)">
 | 
					        <member name="M:FreeSql.IAdo.Transaction(System.Data.IsolationLevel,System.Action)">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
            开启事务(不支持异步)
 | 
					            开启事务(不支持异步)
 | 
				
			||||||
            </summary>
 | 
					            </summary>
 | 
				
			||||||
            <param name="isolationLevel"></param>
 | 
					            <param name="isolationLevel"></param>
 | 
				
			||||||
            <param name="handler">事务体 () => {}</param>
 | 
					            <param name="handler">事务体 () => {}</param>
 | 
				
			||||||
            <param name="timeout">超时,未执行完成(可能)被其他线程事务自动提交</param>
 | 
					 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
        <member name="P:FreeSql.IAdo.TransactionCurrentThread">
 | 
					        <member name="P:FreeSql.IAdo.TransactionCurrentThread">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
@@ -3829,24 +3821,18 @@
 | 
				
			|||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
        <member name="M:IFreeSql.Transaction(System.Action)">
 | 
					        <member name="M:IFreeSql.Transaction(System.Action)">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
            开启事务(不支持异步),60秒未执行完成(可能)被其他线程事务自动提交
 | 
					            开启事务(不支持异步)<para></para>
 | 
				
			||||||
 | 
					            v1.5.0 关闭了线程事务超时自动提交的机制
 | 
				
			||||||
            </summary>
 | 
					            </summary>
 | 
				
			||||||
            <param name="handler">事务体 () => {}</param>
 | 
					            <param name="handler">事务体 () => {}</param>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
        <member name="M:IFreeSql.Transaction(System.TimeSpan,System.Action)">
 | 
					        <member name="M:IFreeSql.Transaction(System.Data.IsolationLevel,System.Action)">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
            开启事务(不支持异步)
 | 
					            开启事务(不支持异步)<para></para>
 | 
				
			||||||
            </summary>
 | 
					            v1.5.0 关闭了线程事务超时自动提交的机制
 | 
				
			||||||
            <param name="timeout">超时,未执行完成(可能)被其他线程事务自动提交</param>
 | 
					 | 
				
			||||||
            <param name="handler">事务体 () => {}</param>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:IFreeSql.Transaction(System.Data.IsolationLevel,System.TimeSpan,System.Action)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            开启事务(不支持异步)
 | 
					 | 
				
			||||||
            </summary>
 | 
					            </summary>
 | 
				
			||||||
            <param name="isolationLevel"></param>
 | 
					            <param name="isolationLevel"></param>
 | 
				
			||||||
            <param name="handler">事务体 () => {}</param>
 | 
					            <param name="handler">事务体 () => {}</param>
 | 
				
			||||||
            <param name="timeout">超时,未执行完成(可能)被其他线程事务自动提交</param>
 | 
					 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
        <member name="P:IFreeSql.Ado">
 | 
					        <member name="P:IFreeSql.Ado">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,23 +39,16 @@ namespace FreeSql
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        #region 事务
 | 
					        #region 事务
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        /// 开启事务(不支持异步),60秒未执行完成(可能)被其他线程事务自动提交
 | 
					        /// 开启事务(不支持异步)
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        /// <param name="handler">事务体 () => {}</param>
 | 
					        /// <param name="handler">事务体 () => {}</param>
 | 
				
			||||||
        void Transaction(Action handler);
 | 
					        void Transaction(Action handler);
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        /// 开启事务(不支持异步)
 | 
					        /// 开启事务(不支持异步)
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        /// <param name="timeout">超时,未执行完成(可能)被其他线程事务自动提交</param>
 | 
					 | 
				
			||||||
        /// <param name="handler">事务体 () => {}</param>
 | 
					 | 
				
			||||||
        void Transaction(TimeSpan timeout, Action handler);
 | 
					 | 
				
			||||||
        /// <summary>
 | 
					 | 
				
			||||||
        /// 开启事务(不支持异步)
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        /// <param name="isolationLevel"></param>
 | 
					        /// <param name="isolationLevel"></param>
 | 
				
			||||||
        /// <param name="handler">事务体 () => {}</param>
 | 
					        /// <param name="handler">事务体 () => {}</param>
 | 
				
			||||||
        /// <param name="timeout">超时,未执行完成(可能)被其他线程事务自动提交</param>
 | 
					        void Transaction(IsolationLevel isolationLevel, Action handler);
 | 
				
			||||||
        void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler);
 | 
					 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        /// 当前线程的事务
 | 
					        /// 当前线程的事务
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -101,23 +101,18 @@ public interface IFreeSql : IDisposable
 | 
				
			|||||||
    IDelete<T1> Delete<T1>(object dywhere) where T1 : class;
 | 
					    IDelete<T1> Delete<T1>(object dywhere) where T1 : class;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /// <summary>
 | 
					    /// <summary>
 | 
				
			||||||
    /// 开启事务(不支持异步),60秒未执行完成(可能)被其他线程事务自动提交
 | 
					    /// 开启事务(不支持异步)<para></para>
 | 
				
			||||||
 | 
					    /// v1.5.0 关闭了线程事务超时自动提交的机制
 | 
				
			||||||
    /// </summary>
 | 
					    /// </summary>
 | 
				
			||||||
    /// <param name="handler">事务体 () => {}</param>
 | 
					    /// <param name="handler">事务体 () => {}</param>
 | 
				
			||||||
    void Transaction(Action handler);
 | 
					    void Transaction(Action handler);
 | 
				
			||||||
    /// <summary>
 | 
					    /// <summary>
 | 
				
			||||||
    /// 开启事务(不支持异步)
 | 
					    /// 开启事务(不支持异步)<para></para>
 | 
				
			||||||
    /// </summary>
 | 
					    /// v1.5.0 关闭了线程事务超时自动提交的机制
 | 
				
			||||||
    /// <param name="timeout">超时,未执行完成(可能)被其他线程事务自动提交</param>
 | 
					 | 
				
			||||||
    /// <param name="handler">事务体 () => {}</param>
 | 
					 | 
				
			||||||
    void Transaction(TimeSpan timeout, Action handler);
 | 
					 | 
				
			||||||
    /// <summary>
 | 
					 | 
				
			||||||
    /// 开启事务(不支持异步)
 | 
					 | 
				
			||||||
    /// </summary>
 | 
					    /// </summary>
 | 
				
			||||||
    /// <param name="isolationLevel"></param>
 | 
					    /// <param name="isolationLevel"></param>
 | 
				
			||||||
    /// <param name="handler">事务体 () => {}</param>
 | 
					    /// <param name="handler">事务体 () => {}</param>
 | 
				
			||||||
    /// <param name="timeout">超时,未执行完成(可能)被其他线程事务自动提交</param>
 | 
					    void Transaction(IsolationLevel isolationLevel, Action handler);
 | 
				
			||||||
    void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /// <summary>
 | 
					    /// <summary>
 | 
				
			||||||
    /// 数据库访问对象
 | 
					    /// 数据库访问对象
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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 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 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;
 | 
					            if (TransactionCurrentThread != null) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -48,7 +48,7 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
            try
 | 
					            try
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                conn = MasterPool.Get();
 | 
					                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;
 | 
					                tran.AopBefore = before;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            catch (Exception ex)
 | 
					            catch (Exception ex)
 | 
				
			||||||
@@ -107,15 +107,14 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
            if (_trans.TryGetValue(Thread.CurrentThread.ManagedThreadId, out var tran)) CommitTransaction(false, tran, ex);
 | 
					            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(Action handler) => TransactionInternal(null, handler);
 | 
				
			||||||
        public void Transaction(TimeSpan timeout, Action handler) => TransactionInternal(null, timeout, handler);
 | 
					        public void Transaction(IsolationLevel isolationLevel, Action handler) => TransactionInternal(isolationLevel, handler);
 | 
				
			||||||
        public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => TransactionInternal(isolationLevel, timeout, handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void TransactionInternal(IsolationLevel? isolationLevel, TimeSpan timeout, Action handler)
 | 
					        void TransactionInternal(IsolationLevel? isolationLevel, Action handler)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            try
 | 
					            try
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                BeginTransaction(timeout, isolationLevel);
 | 
					                BeginTransaction(isolationLevel);
 | 
				
			||||||
                handler();
 | 
					                handler();
 | 
				
			||||||
                CommitTransaction();
 | 
					                CommitTransaction();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -46,8 +46,7 @@ namespace FreeSql.Dameng
 | 
				
			|||||||
        internal CommonExpression InternalCommonExpression { get; }
 | 
					        internal CommonExpression InternalCommonExpression { get; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
					        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
				
			||||||
        public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler);
 | 
					        public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler);
 | 
				
			||||||
        public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
					        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -45,8 +45,7 @@ namespace FreeSql.MsAccess
 | 
				
			|||||||
        internal CommonExpression InternalCommonExpression { get; }
 | 
					        internal CommonExpression InternalCommonExpression { get; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
					        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
				
			||||||
        public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler);
 | 
					        public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler);
 | 
				
			||||||
        public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
					        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,8 +72,7 @@ namespace FreeSql.MySql
 | 
				
			|||||||
        internal CommonExpression InternalCommonExpression { get; }
 | 
					        internal CommonExpression InternalCommonExpression { get; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
					        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
				
			||||||
        public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler);
 | 
					        public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler);
 | 
				
			||||||
        public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
					        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -45,8 +45,7 @@ namespace FreeSql.Odbc.Dameng
 | 
				
			|||||||
        internal CommonExpression InternalCommonExpression { get; }
 | 
					        internal CommonExpression InternalCommonExpression { get; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
					        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
				
			||||||
        public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler);
 | 
					        public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler);
 | 
				
			||||||
        public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
					        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -86,8 +86,7 @@ namespace FreeSql.Odbc.Default
 | 
				
			|||||||
        internal CommonExpression InternalCommonExpression { get; }
 | 
					        internal CommonExpression InternalCommonExpression { get; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
					        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
				
			||||||
        public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler);
 | 
					        public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler);
 | 
				
			||||||
        public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
					        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -50,8 +50,7 @@ namespace FreeSql.Odbc.MySql
 | 
				
			|||||||
        internal CommonExpression InternalCommonExpression { get; }
 | 
					        internal CommonExpression InternalCommonExpression { get; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
					        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
				
			||||||
        public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler);
 | 
					        public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler);
 | 
				
			||||||
        public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
					        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,8 +51,7 @@ namespace FreeSql.Odbc.Oracle
 | 
				
			|||||||
        internal CommonExpression InternalCommonExpression { get; }
 | 
					        internal CommonExpression InternalCommonExpression { get; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
					        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
				
			||||||
        public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler);
 | 
					        public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler);
 | 
				
			||||||
        public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
					        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -49,8 +49,7 @@ namespace FreeSql.Odbc.PostgreSQL
 | 
				
			|||||||
        internal CommonExpression InternalCommonExpression { get; }
 | 
					        internal CommonExpression InternalCommonExpression { get; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
					        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
				
			||||||
        public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler);
 | 
					        public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler);
 | 
				
			||||||
        public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
					        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -57,8 +57,7 @@ namespace FreeSql.Odbc.SqlServer
 | 
				
			|||||||
        internal CommonExpression InternalCommonExpression { get; }
 | 
					        internal CommonExpression InternalCommonExpression { get; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
					        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
				
			||||||
        public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler);
 | 
					        public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler);
 | 
				
			||||||
        public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
					        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -46,8 +46,7 @@ namespace FreeSql.Oracle
 | 
				
			|||||||
        internal CommonExpression InternalCommonExpression { get; }
 | 
					        internal CommonExpression InternalCommonExpression { get; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
					        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
				
			||||||
        public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler);
 | 
					        public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler);
 | 
				
			||||||
        public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
					        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -99,8 +99,7 @@ namespace FreeSql.PostgreSQL
 | 
				
			|||||||
        internal CommonExpression InternalCommonExpression { get; }
 | 
					        internal CommonExpression InternalCommonExpression { get; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
					        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
				
			||||||
        public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler);
 | 
					        public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler);
 | 
				
			||||||
        public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
					        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -58,8 +58,7 @@ namespace FreeSql.SqlServer
 | 
				
			|||||||
        internal CommonExpression InternalCommonExpression { get; }
 | 
					        internal CommonExpression InternalCommonExpression { get; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
					        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
				
			||||||
        public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler);
 | 
					        public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler);
 | 
				
			||||||
        public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
					        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -47,8 +47,7 @@ namespace FreeSql.Sqlite
 | 
				
			|||||||
        internal CommonExpression InternalCommonExpression { get; }
 | 
					        internal CommonExpression InternalCommonExpression { get; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
					        public void Transaction(Action handler) => Ado.Transaction(handler);
 | 
				
			||||||
        public void Transaction(TimeSpan timeout, Action handler) => Ado.Transaction(timeout, handler);
 | 
					        public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler);
 | 
				
			||||||
        public void Transaction(IsolationLevel isolationLevel, TimeSpan timeout, Action handler) => Ado.Transaction(isolationLevel, timeout, handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
					        public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user