mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	- 增加 IInsert/IUpdate BatchOptions 方法指定批量插入的设置;
This commit is contained in:
		@@ -856,6 +856,22 @@
 | 
				
			|||||||
            </summary>
 | 
					            </summary>
 | 
				
			||||||
            <returns></returns>
 | 
					            <returns></returns>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSql.IInsert`1.BatchOptions(System.Int32,System.Int32,System.Boolean)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            批量执行选项设置,一般不需要使用该方法<para></para>
 | 
				
			||||||
 | 
					            各数据库 values, parameters 限制不一样,默认设置:<para></para>
 | 
				
			||||||
 | 
					            MySql 5000 3000<para></para>
 | 
				
			||||||
 | 
					            PostgreSQL 5000 3000<para></para>
 | 
				
			||||||
 | 
					            SqlServer 1000 2100<para></para>
 | 
				
			||||||
 | 
					            Oracle 500 999<para></para>
 | 
				
			||||||
 | 
					            Sqlite 5000 999<para></para>
 | 
				
			||||||
 | 
					            若没有事务传入,内部(默认)会自动开启新事务,保证拆包执行的完整性。
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="valuesLimit">指定根据 values 数量拆分执行</param>
 | 
				
			||||||
 | 
					            <param name="parameterLimit">指定根据 parameters 数量拆分执行</param>
 | 
				
			||||||
 | 
					            <param name="autoTransaction">是否自动开启事务</param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
        <member name="M:FreeSql.IInsert`1.AsTable(System.Func{System.String,System.String})">
 | 
					        <member name="M:FreeSql.IInsert`1.AsTable(System.Func{System.String,System.String})">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
            设置表名规则,可用于分库/分表,参数1:默认表名;返回值:新表名;
 | 
					            设置表名规则,可用于分库/分表,参数1:默认表名;返回值:新表名;
 | 
				
			||||||
@@ -1818,6 +1834,22 @@
 | 
				
			|||||||
            </summary>
 | 
					            </summary>
 | 
				
			||||||
            <returns></returns>
 | 
					            <returns></returns>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSql.IUpdate`1.BatchOptions(System.Int32,System.Int32,System.Boolean)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            批量执行选项设置,一般不需要使用该方法<para></para>
 | 
				
			||||||
 | 
					            各数据库 rows, parameters 限制不一样,默认设置:<para></para>
 | 
				
			||||||
 | 
					            MySql 500 3000<para></para>
 | 
				
			||||||
 | 
					            PostgreSQL 500 3000<para></para>
 | 
				
			||||||
 | 
					            SqlServer 500 2100<para></para>
 | 
				
			||||||
 | 
					            Oracle 200 999<para></para>
 | 
				
			||||||
 | 
					            Sqlite 200 999<para></para>
 | 
				
			||||||
 | 
					            若没有事务传入,内部(默认)会自动开启新事务,保证拆包执行的完整性。
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="rowsLimit">指定根据 rows 数量拆分执行</param>
 | 
				
			||||||
 | 
					            <param name="parameterLimit">指定根据 parameters 数量拆分执行</param>
 | 
				
			||||||
 | 
					            <param name="autoTransaction">是否自动开启事务</param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
        <member name="M:FreeSql.IUpdate`1.SetSource(`0)">
 | 
					        <member name="M:FreeSql.IUpdate`1.SetSource(`0)">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
            更新数据,设置更新的实体
 | 
					            更新数据,设置更新的实体
 | 
				
			||||||
@@ -2146,137 +2178,6 @@
 | 
				
			|||||||
            <param name="parms"></param>
 | 
					            <param name="parms"></param>
 | 
				
			||||||
            <returns></returns>
 | 
					            <returns></returns>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteReaderAsync(System.Func{System.Data.Common.DbDataReader,System.Threading.Tasks.Task},System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="readerHander"></param>
 | 
					 | 
				
			||||||
            <param name="cmdType"></param>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="cmdParms"></param>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteReaderAsync(System.Func{System.Data.Common.DbDataReader,System.Threading.Tasks.Task},System.String,System.Object)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            查询,ExecuteReaderAsync(dr => {}, "select * from user where age > @age", new { age = 25 })
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="parms"></param>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteArrayAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            查询
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="cmdParms"></param>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteArrayAsync(System.String,System.Object)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            查询,ExecuteArrayAsync("select * from user where age > @age", new { age = 25 })
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="parms"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteDataSetAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            查询
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="cmdParms"></param>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteDataSetAsync(System.String,System.Object)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            查询,ExecuteDataSetAsync("select * from user where age > @age; select 2", new { age = 25 })
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="parms"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteDataTableAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            查询
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="cmdParms"></param>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteDataTableAsync(System.String,System.Object)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            查询,ExecuteDataTableAsync("select * from user where age > @age", new { age = 25 })
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="parms"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteNonQueryAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            在【主库】执行
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdType"></param>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="cmdParms"></param>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteNonQueryAsync(System.String,System.Object)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            在【主库】执行,ExecuteNonQueryAsync("delete from user where age > @age", new { age = 25 })
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="parms"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteScalarAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            在【主库】执行
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdType"></param>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="cmdParms"></param>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteScalarAsync(System.String,System.Object)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            在【主库】执行,ExecuteScalarAsync("select 1 from user where age > @age", new { age = 25 })
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="parms"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.QueryAsync``1(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            执行SQL返回对象集合,QueryAsync<User>("select * from user where age > @age", new SqlParameter { ParameterName = "age", Value = 25 })
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <typeparam name="T"></typeparam>
 | 
					 | 
				
			||||||
            <param name="cmdType"></param>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="cmdParms"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.QueryAsync``1(System.String,System.Object)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            执行SQL返回对象集合,QueryAsync<User>("select * from user where age > @age", new { age = 25 })
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <typeparam name="T"></typeparam>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="parms"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.QueryAsync``2(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            执行SQL返回对象集合,Query<User>("select * from user where age > @age; select * from address", new SqlParameter { ParameterName = "age", Value = 25 })
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <typeparam name="T1"></typeparam>
 | 
					 | 
				
			||||||
            <param name="cmdType"></param>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="cmdParms"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.QueryAsync``2(System.String,System.Object)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            执行SQL返回对象集合,Query<User>("select * from user where age > @age; select * from address", new { age = 25 })
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <typeparam name="T1"></typeparam>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="parms"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.IAop.ParseExpression">
 | 
					        <member name="P:FreeSql.IAop.ParseExpression">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
            可自定义解析表达式
 | 
					            可自定义解析表达式
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -66,6 +66,22 @@ namespace FreeSql
 | 
				
			|||||||
        /// <returns></returns>
 | 
					        /// <returns></returns>
 | 
				
			||||||
        IInsert<T1> NoneParameter();
 | 
					        IInsert<T1> NoneParameter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 批量执行选项设置,一般不需要使用该方法<para></para>
 | 
				
			||||||
 | 
					        /// 各数据库 values, parameters 限制不一样,默认设置:<para></para>
 | 
				
			||||||
 | 
					        /// MySql 5000 3000<para></para>
 | 
				
			||||||
 | 
					        /// PostgreSQL 5000 3000<para></para>
 | 
				
			||||||
 | 
					        /// SqlServer 1000 2100<para></para>
 | 
				
			||||||
 | 
					        /// Oracle 500 999<para></para>
 | 
				
			||||||
 | 
					        /// Sqlite 5000 999<para></para>
 | 
				
			||||||
 | 
					        /// 若没有事务传入,内部(默认)会自动开启新事务,保证拆包执行的完整性。
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="valuesLimit">指定根据 values 数量拆分执行</param>
 | 
				
			||||||
 | 
					        /// <param name="parameterLimit">指定根据 parameters 数量拆分执行</param>
 | 
				
			||||||
 | 
					        /// <param name="autoTransaction">是否自动开启事务</param>
 | 
				
			||||||
 | 
					        /// <returns></returns>
 | 
				
			||||||
 | 
					        IInsert<T1> BatchOptions(int valuesLimit, int parameterLimit, bool autoTransaction = true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        /// 设置表名规则,可用于分库/分表,参数1:默认表名;返回值:新表名;
 | 
					        /// 设置表名规则,可用于分库/分表,参数1:默认表名;返回值:新表名;
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,6 +28,22 @@ namespace FreeSql
 | 
				
			|||||||
        /// <returns></returns>
 | 
					        /// <returns></returns>
 | 
				
			||||||
        IUpdate<T1> NoneParameter();
 | 
					        IUpdate<T1> NoneParameter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 批量执行选项设置,一般不需要使用该方法<para></para>
 | 
				
			||||||
 | 
					        /// 各数据库 rows, parameters 限制不一样,默认设置:<para></para>
 | 
				
			||||||
 | 
					        /// MySql 500 3000<para></para>
 | 
				
			||||||
 | 
					        /// PostgreSQL 500 3000<para></para>
 | 
				
			||||||
 | 
					        /// SqlServer 500 2100<para></para>
 | 
				
			||||||
 | 
					        /// Oracle 200 999<para></para>
 | 
				
			||||||
 | 
					        /// Sqlite 200 999<para></para>
 | 
				
			||||||
 | 
					        /// 若没有事务传入,内部(默认)会自动开启新事务,保证拆包执行的完整性。
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="rowsLimit">指定根据 rows 数量拆分执行</param>
 | 
				
			||||||
 | 
					        /// <param name="parameterLimit">指定根据 parameters 数量拆分执行</param>
 | 
				
			||||||
 | 
					        /// <param name="autoTransaction">是否自动开启事务</param>
 | 
				
			||||||
 | 
					        /// <returns></returns>
 | 
				
			||||||
 | 
					        IUpdate<T1> BatchOptions(int rowsLimit, int parameterLimit, bool autoTransaction = true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        /// 更新数据,设置更新的实体
 | 
					        /// 更新数据,设置更新的实体
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,6 +23,8 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
        protected TableInfo _table;
 | 
					        protected TableInfo _table;
 | 
				
			||||||
        protected Func<string, string> _tableRule;
 | 
					        protected Func<string, string> _tableRule;
 | 
				
			||||||
        protected bool _noneParameter, _insertIdentity;
 | 
					        protected bool _noneParameter, _insertIdentity;
 | 
				
			||||||
 | 
					        protected int _batchValuesLimit, _batchParameterLimit;
 | 
				
			||||||
 | 
					        protected bool _batchAutoTransaction = true;
 | 
				
			||||||
        protected DbParameter[] _params;
 | 
					        protected DbParameter[] _params;
 | 
				
			||||||
        protected DbTransaction _transaction;
 | 
					        protected DbTransaction _transaction;
 | 
				
			||||||
        protected DbConnection _connection;
 | 
					        protected DbConnection _connection;
 | 
				
			||||||
@@ -50,6 +52,8 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        protected void ClearData()
 | 
					        protected void ClearData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					            _batchValuesLimit = _batchParameterLimit = 0;
 | 
				
			||||||
 | 
					            _batchAutoTransaction = true;
 | 
				
			||||||
            _insertIdentity = false;
 | 
					            _insertIdentity = false;
 | 
				
			||||||
            _source.Clear();
 | 
					            _source.Clear();
 | 
				
			||||||
            _ignore.Clear();
 | 
					            _ignore.Clear();
 | 
				
			||||||
@@ -83,6 +87,14 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
            return this;
 | 
					            return this;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public IInsert<T1> BatchOptions(int valuesLimit, int parameterLimit, bool autoTransaction = true)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _batchValuesLimit = valuesLimit;
 | 
				
			||||||
 | 
					            _batchParameterLimit = parameterLimit;
 | 
				
			||||||
 | 
					            _batchAutoTransaction = autoTransaction;
 | 
				
			||||||
 | 
					            return this;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public IInsert<T1> AppendData(T1 source)
 | 
					        public IInsert<T1> AppendData(T1 source)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (source != null)
 | 
					            if (source != null)
 | 
				
			||||||
@@ -181,7 +193,7 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
            if (_transaction == null)
 | 
					            if (_transaction == null)
 | 
				
			||||||
                this.WithTransaction(_orm.Ado.TransactionCurrentThread);
 | 
					                this.WithTransaction(_orm.Ado.TransactionCurrentThread);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (_transaction != null)
 | 
					            if (_transaction != null || _batchAutoTransaction == false)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                for (var a = 0; a < ss.Length; a++)
 | 
					                for (var a = 0; a < ss.Length; a++)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
@@ -233,7 +245,7 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
            if (_transaction == null)
 | 
					            if (_transaction == null)
 | 
				
			||||||
                this.WithTransaction(_orm.Ado.TransactionCurrentThread);
 | 
					                this.WithTransaction(_orm.Ado.TransactionCurrentThread);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (_transaction != null)
 | 
					            if (_transaction != null || _batchAutoTransaction == false)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                for (var a = 0; a < ss.Length; a++)
 | 
					                for (var a = 0; a < ss.Length; a++)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
@@ -287,7 +299,7 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
            if (_transaction == null)
 | 
					            if (_transaction == null)
 | 
				
			||||||
                this.WithTransaction(_orm.Ado.TransactionCurrentThread);
 | 
					                this.WithTransaction(_orm.Ado.TransactionCurrentThread);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (_transaction != null)
 | 
					            if (_transaction != null || _batchAutoTransaction == false)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                for (var a = 0; a < ss.Length; a++)
 | 
					                for (var a = 0; a < ss.Length; a++)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,6 +30,8 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
        protected List<DbParameter> _params = new List<DbParameter>();
 | 
					        protected List<DbParameter> _params = new List<DbParameter>();
 | 
				
			||||||
        protected List<DbParameter> _paramsSource = new List<DbParameter>();
 | 
					        protected List<DbParameter> _paramsSource = new List<DbParameter>();
 | 
				
			||||||
        protected bool _noneParameter;
 | 
					        protected bool _noneParameter;
 | 
				
			||||||
 | 
					        protected int _batchRowsLimit, _batchParameterLimit;
 | 
				
			||||||
 | 
					        protected bool _batchAutoTransaction = true;
 | 
				
			||||||
        protected DbTransaction _transaction;
 | 
					        protected DbTransaction _transaction;
 | 
				
			||||||
        protected DbConnection _connection;
 | 
					        protected DbConnection _connection;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -58,6 +60,8 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        protected void ClearData()
 | 
					        protected void ClearData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					            _batchRowsLimit = _batchParameterLimit = 0;
 | 
				
			||||||
 | 
					            _batchAutoTransaction = true;
 | 
				
			||||||
            _source.Clear();
 | 
					            _source.Clear();
 | 
				
			||||||
            _ignore.Clear();
 | 
					            _ignore.Clear();
 | 
				
			||||||
            _auditValueChangedDict.Clear();
 | 
					            _auditValueChangedDict.Clear();
 | 
				
			||||||
@@ -89,6 +93,14 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
            return this;
 | 
					            return this;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public IUpdate<T1> BatchOptions(int rowsLimit, int parameterLimit, bool autoTransaction = true)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _batchRowsLimit = rowsLimit;
 | 
				
			||||||
 | 
					            _batchParameterLimit = parameterLimit;
 | 
				
			||||||
 | 
					            _batchAutoTransaction = autoTransaction;
 | 
				
			||||||
 | 
					            return this;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected void ValidateVersionAndThrow(int affrows)
 | 
					        protected void ValidateVersionAndThrow(int affrows)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (_table.VersionColumn != null && _source.Count > 0)
 | 
					            if (_table.VersionColumn != null && _source.Count > 0)
 | 
				
			||||||
@@ -136,7 +148,7 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
            if (_transaction == null)
 | 
					            if (_transaction == null)
 | 
				
			||||||
                this.WithTransaction(_orm.Ado.TransactionCurrentThread);
 | 
					                this.WithTransaction(_orm.Ado.TransactionCurrentThread);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (_transaction != null)
 | 
					            if (_transaction != null || _batchAutoTransaction == false)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                for (var a = 0; a < ss.Length; a++)
 | 
					                for (var a = 0; a < ss.Length; a++)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
@@ -183,7 +195,7 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
            if (_transaction == null)
 | 
					            if (_transaction == null)
 | 
				
			||||||
                this.WithTransaction(_orm.Ado.TransactionCurrentThread);
 | 
					                this.WithTransaction(_orm.Ado.TransactionCurrentThread);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (_transaction != null)
 | 
					            if (_transaction != null || _batchAutoTransaction == false)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                for (var a = 0; a < ss.Length; a++)
 | 
					                for (var a = 0; a < ss.Length; a++)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,9 +29,9 @@ namespace FreeSql.MySql.Curd
 | 
				
			|||||||
        internal Dictionary<string, bool> InternalIgnore => _ignore;
 | 
					        internal Dictionary<string, bool> InternalIgnore => _ignore;
 | 
				
			||||||
        internal void InternalClearData() => ClearData();
 | 
					        internal void InternalClearData() => ClearData();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(5000, 3000);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchValuesLimit > 0 ? _batchValuesLimit : 5000, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
        public override long ExecuteIdentity() => base.SplitExecuteIdentity(5000, 3000);
 | 
					        public override long ExecuteIdentity() => base.SplitExecuteIdentity(_batchValuesLimit > 0 ? _batchValuesLimit : 5000, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(5000, 3000);
 | 
					        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(_batchValuesLimit > 0 ? _batchValuesLimit : 5000, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override string ToSql()
 | 
					        public override string ToSql()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,8 +25,8 @@ namespace FreeSql.MySql.Curd
 | 
				
			|||||||
        internal string InternalWhereCaseSource(string CsName, Func<string, string> thenValue) => WhereCaseSource(CsName, thenValue);
 | 
					        internal string InternalWhereCaseSource(string CsName, Func<string, string> thenValue) => WhereCaseSource(CsName, thenValue);
 | 
				
			||||||
        internal void InternalToSqlCaseWhenEnd(StringBuilder sb, ColumnInfo col) => ToSqlCaseWhenEnd(sb, col);
 | 
					        internal void InternalToSqlCaseWhenEnd(StringBuilder sb, ColumnInfo col) => ToSqlCaseWhenEnd(sb, col);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(500, 3000);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(500, 3000);
 | 
					        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected override List<T1> RawExecuteUpdated()
 | 
					        protected override List<T1> RawExecuteUpdated()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,9 +18,9 @@ namespace FreeSql.Odbc.Dameng
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(500, 999);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchValuesLimit > 0 ? _batchValuesLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
 | 
				
			||||||
        public override long ExecuteIdentity() => base.SplitExecuteIdentity(500, 999);
 | 
					        public override long ExecuteIdentity() => base.SplitExecuteIdentity(_batchValuesLimit > 0 ? _batchValuesLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
 | 
				
			||||||
        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(500, 999);
 | 
					        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(_batchValuesLimit > 0 ? _batchValuesLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override string ToSql()
 | 
					        public override string ToSql()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,8 +18,8 @@ namespace FreeSql.Odbc.Dameng
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(200, 999);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
 | 
				
			||||||
        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(200, 999);
 | 
					        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected override List<T1> RawExecuteUpdated()
 | 
					        protected override List<T1> RawExecuteUpdated()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,8 +18,8 @@ namespace FreeSql.Odbc.GBase
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(500, 3000);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(500, 3000);
 | 
					        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected override List<T1> RawExecuteUpdated()
 | 
					        protected override List<T1> RawExecuteUpdated()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,9 +16,9 @@ namespace FreeSql.Odbc.GBase
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(5000, 3000);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchValuesLimit > 0 ? _batchValuesLimit : 5000, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
        public override long ExecuteIdentity() => base.SplitExecuteIdentity(5000, 3000);
 | 
					        public override long ExecuteIdentity() => base.SplitExecuteIdentity(_batchValuesLimit > 0 ? _batchValuesLimit : 5000, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(5000, 3000);
 | 
					        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(_batchValuesLimit > 0 ? _batchValuesLimit : 5000, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected override long RawExecuteIdentity()
 | 
					        protected override long RawExecuteIdentity()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,9 +17,9 @@ namespace FreeSql.Odbc.MySql
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(5000, 3000);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchValuesLimit > 0 ? _batchValuesLimit : 5000, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
        public override long ExecuteIdentity() => base.SplitExecuteIdentity(5000, 3000);
 | 
					        public override long ExecuteIdentity() => base.SplitExecuteIdentity(_batchValuesLimit > 0 ? _batchValuesLimit : 5000, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(5000, 3000);
 | 
					        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(_batchValuesLimit > 0 ? _batchValuesLimit : 5000, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected override long RawExecuteIdentity()
 | 
					        protected override long RawExecuteIdentity()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,8 +18,8 @@ namespace FreeSql.Odbc.MySql
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(500, 3000);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(500, 3000);
 | 
					        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected override List<T1> RawExecuteUpdated()
 | 
					        protected override List<T1> RawExecuteUpdated()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,9 +18,9 @@ namespace FreeSql.Odbc.Oracle
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(500, 999);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchValuesLimit > 0 ? _batchValuesLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
 | 
				
			||||||
        public override long ExecuteIdentity() => base.SplitExecuteIdentity(500, 999);
 | 
					        public override long ExecuteIdentity() => base.SplitExecuteIdentity(_batchValuesLimit > 0 ? _batchValuesLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
 | 
				
			||||||
        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(500, 999);
 | 
					        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(_batchValuesLimit > 0 ? _batchValuesLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override string ToSql()
 | 
					        public override string ToSql()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,8 +18,8 @@ namespace FreeSql.Odbc.Oracle
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(200, 999);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
 | 
				
			||||||
        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(200, 999);
 | 
					        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected override List<T1> RawExecuteUpdated()
 | 
					        protected override List<T1> RawExecuteUpdated()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,9 +16,9 @@ namespace FreeSql.Odbc.PostgreSQL
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(5000, 3000);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchValuesLimit > 0 ? _batchValuesLimit : 5000, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
        public override long ExecuteIdentity() => base.SplitExecuteIdentity(5000, 3000);
 | 
					        public override long ExecuteIdentity() => base.SplitExecuteIdentity(_batchValuesLimit > 0 ? _batchValuesLimit : 5000, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(5000, 3000);
 | 
					        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(_batchValuesLimit > 0 ? _batchValuesLimit : 5000, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected override long RawExecuteIdentity()
 | 
					        protected override long RawExecuteIdentity()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,8 +18,8 @@ namespace FreeSql.Odbc.PostgreSQL
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(500, 3000);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(500, 3000);
 | 
					        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected override List<T1> RawExecuteUpdated()
 | 
					        protected override List<T1> RawExecuteUpdated()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,9 +17,9 @@ namespace FreeSql.Odbc.SqlServer
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(1000, 2100);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchValuesLimit > 0 ? _batchValuesLimit : 1000, _batchParameterLimit > 0 ? _batchParameterLimit : 2100);
 | 
				
			||||||
        public override long ExecuteIdentity() => base.SplitExecuteIdentity(1000, 2100);
 | 
					        public override long ExecuteIdentity() => base.SplitExecuteIdentity(_batchValuesLimit > 0 ? _batchValuesLimit : 1000, _batchParameterLimit > 0 ? _batchParameterLimit : 2100);
 | 
				
			||||||
        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(1000, 2100);
 | 
					        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(_batchValuesLimit > 0 ? _batchValuesLimit : 1000, _batchParameterLimit > 0 ? _batchParameterLimit : 2100);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected override int RawExecuteAffrows()
 | 
					        protected override int RawExecuteAffrows()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,8 +18,8 @@ namespace FreeSql.Odbc.SqlServer
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(500, 2100);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 2100);
 | 
				
			||||||
        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(500, 2100);
 | 
					        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 2100);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected override List<T1> RawExecuteUpdated()
 | 
					        protected override List<T1> RawExecuteUpdated()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,9 +19,9 @@ namespace FreeSql.Oracle.Curd
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(500, 999);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchValuesLimit > 0 ? _batchValuesLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
 | 
				
			||||||
        public override long ExecuteIdentity() => base.SplitExecuteIdentity(500, 999);
 | 
					        public override long ExecuteIdentity() => base.SplitExecuteIdentity(_batchValuesLimit > 0 ? _batchValuesLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
 | 
				
			||||||
        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(500, 999);
 | 
					        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(_batchValuesLimit > 0 ? _batchValuesLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override string ToSql()
 | 
					        public override string ToSql()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,8 +18,8 @@ namespace FreeSql.Oracle.Curd
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(200, 999);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
 | 
				
			||||||
        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(200, 999);
 | 
					        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected override List<T1> RawExecuteUpdated()
 | 
					        protected override List<T1> RawExecuteUpdated()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,9 +29,9 @@ namespace FreeSql.PostgreSQL.Curd
 | 
				
			|||||||
        internal Dictionary<string, bool> InternalIgnore => _ignore;
 | 
					        internal Dictionary<string, bool> InternalIgnore => _ignore;
 | 
				
			||||||
        internal void InternalClearData() => ClearData();
 | 
					        internal void InternalClearData() => ClearData();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(5000, 3000);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchValuesLimit > 0 ? _batchValuesLimit : 5000, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
        public override long ExecuteIdentity() => base.SplitExecuteIdentity(5000, 3000);
 | 
					        public override long ExecuteIdentity() => base.SplitExecuteIdentity(_batchValuesLimit > 0 ? _batchValuesLimit : 5000, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(5000, 3000);
 | 
					        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(_batchValuesLimit > 0 ? _batchValuesLimit : 5000, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected override long RawExecuteIdentity()
 | 
					        protected override long RawExecuteIdentity()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,8 +26,8 @@ namespace FreeSql.PostgreSQL.Curd
 | 
				
			|||||||
        internal string InternalWhereCaseSource(string CsName, Func<string, string> thenValue) => WhereCaseSource(CsName, thenValue);
 | 
					        internal string InternalWhereCaseSource(string CsName, Func<string, string> thenValue) => WhereCaseSource(CsName, thenValue);
 | 
				
			||||||
        internal void InternalToSqlCaseWhenEnd(StringBuilder sb, ColumnInfo col) => ToSqlCaseWhenEnd(sb, col);
 | 
					        internal void InternalToSqlCaseWhenEnd(StringBuilder sb, ColumnInfo col) => ToSqlCaseWhenEnd(sb, col);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(500, 3000);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(500, 3000);
 | 
					        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected override List<T1> RawExecuteUpdated()
 | 
					        protected override List<T1> RawExecuteUpdated()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,9 +18,9 @@ namespace FreeSql.SqlServer.Curd
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(1000, 2100);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchValuesLimit > 0 ? _batchValuesLimit : 1000, _batchParameterLimit > 0 ? _batchParameterLimit : 2100);
 | 
				
			||||||
        public override long ExecuteIdentity() => base.SplitExecuteIdentity(1000, 2100);
 | 
					        public override long ExecuteIdentity() => base.SplitExecuteIdentity(_batchValuesLimit > 0 ? _batchValuesLimit : 1000, _batchParameterLimit > 0 ? _batchParameterLimit : 2100);
 | 
				
			||||||
        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(1000, 2100);
 | 
					        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(_batchValuesLimit > 0 ? _batchValuesLimit : 1000, _batchParameterLimit > 0 ? _batchParameterLimit : 2100);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override string ToSql()
 | 
					        public override string ToSql()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,8 +18,8 @@ namespace FreeSql.SqlServer.Curd
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(500, 2100);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 2100);
 | 
				
			||||||
        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(500, 2100);
 | 
					        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 2100);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected override List<T1> RawExecuteUpdated()
 | 
					        protected override List<T1> RawExecuteUpdated()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,9 +16,9 @@ namespace FreeSql.Sqlite.Curd
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(5000, 999);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchValuesLimit > 0 ? _batchValuesLimit : 5000, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
 | 
				
			||||||
        public override long ExecuteIdentity() => base.SplitExecuteIdentity(5000, 999);
 | 
					        public override long ExecuteIdentity() => base.SplitExecuteIdentity(_batchValuesLimit > 0 ? _batchValuesLimit : 5000, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
 | 
				
			||||||
        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(5000, 999);
 | 
					        public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(_batchValuesLimit > 0 ? _batchValuesLimit : 5000, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected override long RawExecuteIdentity()
 | 
					        protected override long RawExecuteIdentity()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,8 +18,8 @@ namespace FreeSql.Sqlite.Curd
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override int ExecuteAffrows() => base.SplitExecuteAffrows(200, 999);
 | 
					        public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
 | 
				
			||||||
        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(200, 999);
 | 
					        public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected override List<T1> RawExecuteUpdated()
 | 
					        protected override List<T1> RawExecuteUpdated()
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user