mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 12:28:15 +08:00
- 增加 IInsert/IUpdate BatchOptions 方法指定批量插入的设置;
This commit is contained in:
@ -856,6 +856,22 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</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})">
|
||||
<summary>
|
||||
设置表名规则,可用于分库/分表,参数1:默认表名;返回值:新表名;
|
||||
@ -1818,6 +1834,22 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</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)">
|
||||
<summary>
|
||||
更新数据,设置更新的实体
|
||||
@ -2146,137 +2178,6 @@
|
||||
<param name="parms"></param>
|
||||
<returns></returns>
|
||||
</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">
|
||||
<summary>
|
||||
可自定义解析表达式
|
||||
|
@ -66,6 +66,22 @@ namespace FreeSql
|
||||
/// <returns></returns>
|
||||
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>
|
||||
/// 设置表名规则,可用于分库/分表,参数1:默认表名;返回值:新表名;
|
||||
/// </summary>
|
||||
|
@ -28,6 +28,22 @@ namespace FreeSql
|
||||
/// <returns></returns>
|
||||
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>
|
||||
|
@ -23,6 +23,8 @@ namespace FreeSql.Internal.CommonProvider
|
||||
protected TableInfo _table;
|
||||
protected Func<string, string> _tableRule;
|
||||
protected bool _noneParameter, _insertIdentity;
|
||||
protected int _batchValuesLimit, _batchParameterLimit;
|
||||
protected bool _batchAutoTransaction = true;
|
||||
protected DbParameter[] _params;
|
||||
protected DbTransaction _transaction;
|
||||
protected DbConnection _connection;
|
||||
@ -50,6 +52,8 @@ namespace FreeSql.Internal.CommonProvider
|
||||
}
|
||||
protected void ClearData()
|
||||
{
|
||||
_batchValuesLimit = _batchParameterLimit = 0;
|
||||
_batchAutoTransaction = true;
|
||||
_insertIdentity = false;
|
||||
_source.Clear();
|
||||
_ignore.Clear();
|
||||
@ -83,6 +87,14 @@ namespace FreeSql.Internal.CommonProvider
|
||||
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)
|
||||
{
|
||||
if (source != null)
|
||||
@ -181,7 +193,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (_transaction == null)
|
||||
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
||||
|
||||
if (_transaction != null)
|
||||
if (_transaction != null || _batchAutoTransaction == false)
|
||||
{
|
||||
for (var a = 0; a < ss.Length; a++)
|
||||
{
|
||||
@ -233,7 +245,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (_transaction == null)
|
||||
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
||||
|
||||
if (_transaction != null)
|
||||
if (_transaction != null || _batchAutoTransaction == false)
|
||||
{
|
||||
for (var a = 0; a < ss.Length; a++)
|
||||
{
|
||||
@ -287,7 +299,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (_transaction == null)
|
||||
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
||||
|
||||
if (_transaction != null)
|
||||
if (_transaction != null || _batchAutoTransaction == false)
|
||||
{
|
||||
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> _paramsSource = new List<DbParameter>();
|
||||
protected bool _noneParameter;
|
||||
protected int _batchRowsLimit, _batchParameterLimit;
|
||||
protected bool _batchAutoTransaction = true;
|
||||
protected DbTransaction _transaction;
|
||||
protected DbConnection _connection;
|
||||
|
||||
@ -58,6 +60,8 @@ namespace FreeSql.Internal.CommonProvider
|
||||
}
|
||||
protected void ClearData()
|
||||
{
|
||||
_batchRowsLimit = _batchParameterLimit = 0;
|
||||
_batchAutoTransaction = true;
|
||||
_source.Clear();
|
||||
_ignore.Clear();
|
||||
_auditValueChangedDict.Clear();
|
||||
@ -89,6 +93,14 @@ namespace FreeSql.Internal.CommonProvider
|
||||
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)
|
||||
{
|
||||
if (_table.VersionColumn != null && _source.Count > 0)
|
||||
@ -136,7 +148,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (_transaction == null)
|
||||
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
||||
|
||||
if (_transaction != null)
|
||||
if (_transaction != null || _batchAutoTransaction == false)
|
||||
{
|
||||
for (var a = 0; a < ss.Length; a++)
|
||||
{
|
||||
@ -183,7 +195,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (_transaction == null)
|
||||
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
||||
|
||||
if (_transaction != null)
|
||||
if (_transaction != null || _batchAutoTransaction == false)
|
||||
{
|
||||
for (var a = 0; a < ss.Length; a++)
|
||||
{
|
||||
|
Reference in New Issue
Block a user