mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 04:18:16 +08:00
## v0.3.24
- 增加 GroupBy 分页方法; - 修复 Insert 参数化命名 bug,当存在 Id Id2 时发生; - 优化 Insert/Delete/Update 对象执行完后清理数据,以备多次使用;
This commit is contained in:
@ -30,6 +30,14 @@ namespace FreeSql.Internal.CommonProvider {
|
||||
if (_orm.CodeFirst.IsAutoSyncStructure) _orm.CodeFirst.SyncStructure<T1>();
|
||||
}
|
||||
|
||||
protected void ClearData() {
|
||||
_source.Clear();
|
||||
_where.Clear();
|
||||
_whereTimes = 0;
|
||||
_params.Clear();
|
||||
}
|
||||
|
||||
|
||||
public IDelete<T1> WithTransaction(DbTransaction transaction) {
|
||||
_transaction = transaction;
|
||||
return this;
|
||||
@ -38,12 +46,16 @@ namespace FreeSql.Internal.CommonProvider {
|
||||
public int ExecuteAffrows() {
|
||||
var sql = this.ToSql();
|
||||
if (string.IsNullOrEmpty(sql)) return 0;
|
||||
return _orm.Ado.ExecuteNonQuery(_transaction, CommandType.Text, sql, _params.ToArray());
|
||||
var affrows = _orm.Ado.ExecuteNonQuery(_transaction, CommandType.Text, sql, _params.ToArray());
|
||||
this.ClearData();
|
||||
return affrows;
|
||||
}
|
||||
async public Task<int> ExecuteAffrowsAsync() {
|
||||
var sql = this.ToSql();
|
||||
if (string.IsNullOrEmpty(sql)) return 0;
|
||||
return await _orm.Ado.ExecuteNonQueryAsync(_transaction, CommandType.Text, sql, _params.ToArray());
|
||||
var affrows = await _orm.Ado.ExecuteNonQueryAsync(_transaction, CommandType.Text, sql, _params.ToArray());
|
||||
this.ClearData();
|
||||
return affrows;
|
||||
}
|
||||
public abstract List<T1> ExecuteDeleted();
|
||||
public abstract Task<List<T1>> ExecuteDeletedAsync();
|
||||
|
@ -32,6 +32,12 @@ namespace FreeSql.Internal.CommonProvider {
|
||||
if (_orm.CodeFirst.IsAutoSyncStructure) _orm.CodeFirst.SyncStructure<T1>();
|
||||
}
|
||||
|
||||
protected void ClearData() {
|
||||
_source.Clear();
|
||||
_ignore.Clear();
|
||||
_params = null;
|
||||
}
|
||||
|
||||
public IInsert<T1> WithTransaction(DbTransaction transaction) {
|
||||
_transaction = transaction;
|
||||
return this;
|
||||
@ -267,8 +273,16 @@ namespace FreeSql.Internal.CommonProvider {
|
||||
}
|
||||
#endregion
|
||||
|
||||
internal int RawExecuteAffrows() => _orm.Ado.ExecuteNonQuery(_transaction, CommandType.Text, ToSql(), _params);
|
||||
internal Task<int> RawExecuteAffrowsAsync() => _orm.Ado.ExecuteNonQueryAsync(_transaction, CommandType.Text, ToSql(), _params);
|
||||
internal int RawExecuteAffrows() {
|
||||
var affrows = _orm.Ado.ExecuteNonQuery(_transaction, CommandType.Text, ToSql(), _params);
|
||||
this.ClearData();
|
||||
return affrows;
|
||||
}
|
||||
async internal Task<int> RawExecuteAffrowsAsync() {
|
||||
var affrows = await _orm.Ado.ExecuteNonQueryAsync(_transaction, CommandType.Text, ToSql(), _params);
|
||||
this.ClearData();
|
||||
return affrows;
|
||||
}
|
||||
internal abstract long RawExecuteIdentity();
|
||||
internal abstract Task<long> RawExecuteIdentityAsync();
|
||||
internal abstract List<T1> RawExecuteInserted();
|
||||
@ -331,8 +345,8 @@ namespace FreeSql.Internal.CommonProvider {
|
||||
if (_noneParameter)
|
||||
sb.Append(_commonUtils.GetNoneParamaterSqlValue(specialParams, col.CsType, val));
|
||||
else {
|
||||
sb.Append(_commonUtils.QuoteWriteParamter(col.CsType, _commonUtils.QuoteParamterName($"{col.CsName}{didx}")));
|
||||
_params[didx * colidx + colidx2] = _commonUtils.AppendParamter(null, $"{col.CsName}{didx}", col.CsType, val);
|
||||
sb.Append(_commonUtils.QuoteWriteParamter(col.CsType, _commonUtils.QuoteParamterName($"{col.CsName}_{didx}")));
|
||||
_params[didx * colidx + colidx2] = _commonUtils.AppendParamter(null, $"{col.CsName}_{didx}", col.CsType, val);
|
||||
}
|
||||
++colidx2;
|
||||
}
|
||||
|
@ -79,5 +79,25 @@ namespace FreeSql.Internal.CommonProvider {
|
||||
var method = _select.GetType().GetMethod("ToSql", new[] { typeof(string) });
|
||||
return method.Invoke(_select, new object[] { field.Length > 0 ? field.Remove(0, 2).ToString() : null }) as string;
|
||||
}
|
||||
|
||||
public ISelectGrouping<T1> Skip(int offset) {
|
||||
var method = _select.GetType().GetMethod("Skip", new[] { typeof(int) });
|
||||
method.Invoke(_select, new object[] { offset });
|
||||
return this;
|
||||
}
|
||||
public ISelectGrouping<T1> Offset(int offset) => this.Skip(offset);
|
||||
|
||||
public ISelectGrouping<T1> Limit(int limit) {
|
||||
var method = _select.GetType().GetMethod("Limit", new[] { typeof(int) });
|
||||
method.Invoke(_select, new object[] { limit });
|
||||
return this;
|
||||
}
|
||||
public ISelectGrouping<T1> Take(int limit) => this.Limit(limit);
|
||||
|
||||
public ISelectGrouping<T1> Page(int pageIndex, int pageSize) {
|
||||
var method = _select.GetType().GetMethod("Page", new[] { typeof(int), typeof(int) });
|
||||
method.Invoke(_select, new object[] { pageIndex, pageSize });
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -35,6 +35,15 @@ namespace FreeSql.Internal.CommonProvider {
|
||||
if (_orm.CodeFirst.IsAutoSyncStructure) _orm.CodeFirst.SyncStructure<T1>();
|
||||
}
|
||||
|
||||
protected void ClearData() {
|
||||
_source.Clear();
|
||||
_ignore.Clear();
|
||||
_where.Clear();
|
||||
_set.Clear();
|
||||
_params.Clear();
|
||||
_paramsSource.Clear();
|
||||
}
|
||||
|
||||
public IUpdate<T1> WithTransaction(DbTransaction transaction) {
|
||||
_transaction = transaction;
|
||||
return this;
|
||||
@ -47,12 +56,16 @@ namespace FreeSql.Internal.CommonProvider {
|
||||
public int ExecuteAffrows() {
|
||||
var sql = this.ToSql();
|
||||
if (string.IsNullOrEmpty(sql)) return 0;
|
||||
return _orm.Ado.ExecuteNonQuery(_transaction, CommandType.Text, sql, _params.Concat(_paramsSource).ToArray());
|
||||
var affrows = _orm.Ado.ExecuteNonQuery(_transaction, CommandType.Text, sql, _params.Concat(_paramsSource).ToArray());
|
||||
this.ClearData();
|
||||
return affrows;
|
||||
}
|
||||
async public Task<int> ExecuteAffrowsAsync() {
|
||||
var sql = this.ToSql();
|
||||
if (string.IsNullOrEmpty(sql)) return 0;
|
||||
return await _orm.Ado.ExecuteNonQueryAsync(_transaction, CommandType.Text, sql, _params.Concat(_paramsSource).ToArray());
|
||||
var affrows = await _orm.Ado.ExecuteNonQueryAsync(_transaction, CommandType.Text, sql, _params.Concat(_paramsSource).ToArray());
|
||||
this.ClearData();
|
||||
return affrows;
|
||||
}
|
||||
public abstract List<T1> ExecuteUpdated();
|
||||
public abstract Task<List<T1>> ExecuteUpdatedAsync();
|
||||
|
Reference in New Issue
Block a user