mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 20:38:16 +08:00
## v0.3.24
- 增加 GroupBy 分页方法; - 修复 Insert 参数化命名 bug,当存在 Id Id2 时发生; - 优化 Insert/Delete/Update 对象执行完后清理数据,以备多次使用;
This commit is contained in:
@ -2,7 +2,7 @@
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<Version>0.3.23</Version>
|
||||
<Version>0.3.24</Version>
|
||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||
<Authors>YeXiangQin</Authors>
|
||||
<Description>FreeSql is the most convenient ORM in dotnet. It supports Mysql, Postgresql, SqlServer, Oracle and Sqlite.</Description>
|
||||
|
@ -43,6 +43,40 @@ namespace FreeSql {
|
||||
/// <param name="select">选择列</param>
|
||||
/// <returns></returns>
|
||||
string ToSql<TReturn>(Expression<Func<ISelectGroupingAggregate<T1>, TReturn>> select);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 查询向后偏移行数
|
||||
/// </summary>
|
||||
/// <param name="offset"></param>
|
||||
/// <returns></returns>
|
||||
ISelectGrouping<T1> Skip(int offset);
|
||||
/// <summary>
|
||||
/// 查询向后偏移行数
|
||||
/// </summary>
|
||||
/// <param name="offset">行数</param>
|
||||
/// <returns></returns>
|
||||
ISelectGrouping<T1> Offset(int offset);
|
||||
/// <summary>
|
||||
/// 查询多少条数据
|
||||
/// </summary>
|
||||
/// <param name="limit"></param>
|
||||
/// <returns></returns>
|
||||
ISelectGrouping<T1> Limit(int limit);
|
||||
/// <summary>
|
||||
/// 查询多少条数据
|
||||
/// </summary>
|
||||
/// <param name="limit"></param>
|
||||
/// <returns></returns>
|
||||
ISelectGrouping<T1> Take(int limit);
|
||||
|
||||
/// <summary>
|
||||
/// 分页
|
||||
/// </summary>
|
||||
/// <param name="pageIndex">第几页</param>
|
||||
/// <param name="pageSize">每页多少</param>
|
||||
/// <returns></returns>
|
||||
ISelectGrouping<T1> Page(int pageIndex, int pageSize);
|
||||
}
|
||||
|
||||
public interface ISelectGroupingAggregate<T1> {
|
||||
|
@ -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();
|
||||
|
@ -24,7 +24,9 @@ namespace FreeSql.MySql.Curd {
|
||||
sb.Append(_commonUtils.QuoteReadColumn(col.CsType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||
++colidx;
|
||||
}
|
||||
return _orm.Ado.Query<T1>(_transaction, CommandType.Text, sb.ToString(), _params.ToArray());
|
||||
var ret = _orm.Ado.Query<T1>(_transaction, CommandType.Text, sb.ToString(), _params.ToArray());
|
||||
this.ClearData();
|
||||
return ret;
|
||||
}
|
||||
async public override Task<List<T1>> ExecuteDeletedAsync() {
|
||||
var sql = this.ToSql();
|
||||
@ -39,7 +41,9 @@ namespace FreeSql.MySql.Curd {
|
||||
sb.Append(_commonUtils.QuoteReadColumn(col.CsType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||
++colidx;
|
||||
}
|
||||
return await _orm.Ado.QueryAsync<T1>(_transaction, CommandType.Text, sb.ToString(), _params.ToArray());
|
||||
var ret = await _orm.Ado.QueryAsync<T1>(_transaction, CommandType.Text, sb.ToString(), _params.ToArray());
|
||||
this.ClearData();
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23,13 +23,17 @@ namespace FreeSql.MySql.Curd {
|
||||
var sql = this.ToSql();
|
||||
if (string.IsNullOrEmpty(sql)) return 0;
|
||||
|
||||
return long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_transaction, CommandType.Text, string.Concat(sql, "; SELECT LAST_INSERT_ID();"), _params)), out var trylng) ? trylng : 0;
|
||||
var id = long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_transaction, CommandType.Text, string.Concat(sql, "; SELECT LAST_INSERT_ID();"), _params)), out var trylng) ? trylng : 0;
|
||||
this.ClearData();
|
||||
return id;
|
||||
}
|
||||
async internal override Task<long> RawExecuteIdentityAsync() {
|
||||
var sql = this.ToSql();
|
||||
if (string.IsNullOrEmpty(sql)) return 0;
|
||||
|
||||
return long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_transaction, CommandType.Text, string.Concat(sql, "; SELECT LAST_INSERT_ID();"), _params)), out var trylng) ? trylng : 0;
|
||||
var id = long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_transaction, CommandType.Text, string.Concat(sql, "; SELECT LAST_INSERT_ID();"), _params)), out var trylng) ? trylng : 0;
|
||||
this.ClearData();
|
||||
return id;
|
||||
}
|
||||
internal override List<T1> RawExecuteInserted() {
|
||||
var sql = this.ToSql();
|
||||
@ -44,7 +48,9 @@ namespace FreeSql.MySql.Curd {
|
||||
sb.Append(_commonUtils.QuoteReadColumn(col.CsType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||
++colidx;
|
||||
}
|
||||
return _orm.Ado.Query<T1>(_transaction, CommandType.Text, sb.ToString(), _params);
|
||||
var ret = _orm.Ado.Query<T1>(_transaction, CommandType.Text, sb.ToString(), _params);
|
||||
this.ClearData();
|
||||
return ret;
|
||||
}
|
||||
async internal override Task<List<T1>> RawExecuteInsertedAsync() {
|
||||
var sql = this.ToSql();
|
||||
@ -59,7 +65,9 @@ namespace FreeSql.MySql.Curd {
|
||||
sb.Append(_commonUtils.QuoteReadColumn(col.CsType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||
++colidx;
|
||||
}
|
||||
return await _orm.Ado.QueryAsync<T1>(_transaction, CommandType.Text, sb.ToString(), _params);
|
||||
var ret = await _orm.Ado.QueryAsync<T1>(_transaction, CommandType.Text, sb.ToString(), _params);
|
||||
this.ClearData();
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -27,7 +27,9 @@ namespace FreeSql.MySql.Curd {
|
||||
sb.Append(_commonUtils.QuoteReadColumn(col.CsType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||
++colidx;
|
||||
}
|
||||
return _orm.Ado.Query<T1>(_transaction, CommandType.Text, sb.ToString(), _params.Concat(_paramsSource).ToArray());
|
||||
var ret = _orm.Ado.Query<T1>(_transaction, CommandType.Text, sb.ToString(), _params.Concat(_paramsSource).ToArray());
|
||||
this.ClearData();
|
||||
return ret;
|
||||
}
|
||||
async public override Task<List<T1>> ExecuteUpdatedAsync() {
|
||||
var sql = this.ToSql();
|
||||
@ -42,7 +44,9 @@ namespace FreeSql.MySql.Curd {
|
||||
sb.Append(_commonUtils.QuoteReadColumn(col.CsType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||
++colidx;
|
||||
}
|
||||
return await _orm.Ado.QueryAsync<T1>(_transaction, CommandType.Text, sb.ToString(), _params.Concat(_paramsSource).ToArray());
|
||||
var ret = await _orm.Ado.QueryAsync<T1>(_transaction, CommandType.Text, sb.ToString(), _params.Concat(_paramsSource).ToArray());
|
||||
this.ClearData();
|
||||
return ret;
|
||||
}
|
||||
|
||||
protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys) {
|
||||
|
@ -69,8 +69,8 @@ namespace FreeSql.Oracle.Curd {
|
||||
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;
|
||||
}
|
||||
@ -95,7 +95,9 @@ namespace FreeSql.Oracle.Curd {
|
||||
var identParam = _commonUtils.AppendParamter(null, $"{_identCol.CsName}99", _identCol.CsType, 0) as OracleParameter;
|
||||
identParam.Direction = ParameterDirection.Output;
|
||||
_orm.Ado.ExecuteNonQuery(_transaction, CommandType.Text, $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}", _params.Concat(new[] { identParam }).ToArray());
|
||||
return long.TryParse(string.Concat(identParam.Value), out var trylng) ? trylng : 0;
|
||||
var id = long.TryParse(string.Concat(identParam.Value), out var trylng) ? trylng : 0;
|
||||
this.ClearData();
|
||||
return id;
|
||||
}
|
||||
async internal override Task<long> RawExecuteIdentityAsync() {
|
||||
var sql = this.ToSql();
|
||||
@ -109,7 +111,9 @@ namespace FreeSql.Oracle.Curd {
|
||||
var identParam = _commonUtils.AppendParamter(null, $"{_identCol.CsName}99", _identCol.CsType, 0) as OracleParameter;
|
||||
identParam.Direction = ParameterDirection.Output;
|
||||
await _orm.Ado.ExecuteNonQueryAsync(_transaction, CommandType.Text, $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}", _params.Concat(new[] { identParam }).ToArray());
|
||||
return long.TryParse(string.Concat(identParam.Value), out var trylng) ? trylng : 0;
|
||||
var id = long.TryParse(string.Concat(identParam.Value), out var trylng) ? trylng : 0;
|
||||
this.ClearData();
|
||||
return id;
|
||||
}
|
||||
|
||||
internal override List<T1> RawExecuteInserted() {
|
||||
@ -117,6 +121,7 @@ namespace FreeSql.Oracle.Curd {
|
||||
if (string.IsNullOrEmpty(sql)) return new List<T1>();
|
||||
|
||||
this.ExecuteAffrows();
|
||||
this.ClearData();
|
||||
return _source;
|
||||
}
|
||||
async internal override Task<List<T1>> RawExecuteInsertedAsync() {
|
||||
@ -124,6 +129,7 @@ namespace FreeSql.Oracle.Curd {
|
||||
if (string.IsNullOrEmpty(sql)) return new List<T1>();
|
||||
|
||||
await this.ExecuteAffrowsAsync();
|
||||
this.ClearData();
|
||||
return _source;
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,9 @@ namespace FreeSql.PostgreSQL.Curd {
|
||||
sb.Append(_commonUtils.QuoteReadColumn(col.CsType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||
++colidx;
|
||||
}
|
||||
return _orm.Ado.Query<T1>(_transaction, CommandType.Text, sb.ToString(), _params.ToArray());
|
||||
var ret = _orm.Ado.Query<T1>(_transaction, CommandType.Text, sb.ToString(), _params.ToArray());
|
||||
this.ClearData();
|
||||
return ret;
|
||||
}
|
||||
async public override Task<List<T1>> ExecuteDeletedAsync() {
|
||||
var sql = this.ToSql();
|
||||
@ -39,7 +41,9 @@ namespace FreeSql.PostgreSQL.Curd {
|
||||
sb.Append(_commonUtils.QuoteReadColumn(col.CsType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||
++colidx;
|
||||
}
|
||||
return await _orm.Ado.QueryAsync<T1>(_transaction, CommandType.Text, sb.ToString(), _params.ToArray());
|
||||
var ret = await _orm.Ado.QueryAsync<T1>(_transaction, CommandType.Text, sb.ToString(), _params.ToArray());
|
||||
this.ClearData();
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -29,7 +29,9 @@ namespace FreeSql.PostgreSQL.Curd {
|
||||
_orm.Ado.ExecuteNonQuery(_transaction, CommandType.Text, sql, _params);
|
||||
return 0;
|
||||
}
|
||||
return long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_transaction, CommandType.Text, string.Concat(sql, " RETURNING ", _commonUtils.QuoteSqlName(identCols.First().Value.Attribute.Name)), _params)), out var trylng) ? trylng : 0;
|
||||
var id = long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_transaction, CommandType.Text, string.Concat(sql, " RETURNING ", _commonUtils.QuoteSqlName(identCols.First().Value.Attribute.Name)), _params)), out var trylng) ? trylng : 0;
|
||||
this.ClearData();
|
||||
return id;
|
||||
}
|
||||
async internal override Task<long> RawExecuteIdentityAsync() {
|
||||
var sql = this.ToSql();
|
||||
@ -40,7 +42,9 @@ namespace FreeSql.PostgreSQL.Curd {
|
||||
await _orm.Ado.ExecuteNonQueryAsync(_transaction, CommandType.Text, sql, _params);
|
||||
return 0;
|
||||
}
|
||||
return long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_transaction, CommandType.Text, string.Concat(sql, " RETURNING ", _commonUtils.QuoteSqlName(identCols.First().Value.Attribute.Name)), _params)), out var trylng) ? trylng : 0;
|
||||
var id = long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_transaction, CommandType.Text, string.Concat(sql, " RETURNING ", _commonUtils.QuoteSqlName(identCols.First().Value.Attribute.Name)), _params)), out var trylng) ? trylng : 0;
|
||||
this.ClearData();
|
||||
return id;
|
||||
}
|
||||
|
||||
internal override List<T1> RawExecuteInserted() {
|
||||
@ -56,7 +60,9 @@ namespace FreeSql.PostgreSQL.Curd {
|
||||
sb.Append(_commonUtils.QuoteReadColumn(col.CsType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||
++colidx;
|
||||
}
|
||||
return _orm.Ado.Query<T1>(_transaction, CommandType.Text, sb.ToString(), _params);
|
||||
var ret = _orm.Ado.Query<T1>(_transaction, CommandType.Text, sb.ToString(), _params);
|
||||
this.ClearData();
|
||||
return ret;
|
||||
}
|
||||
async internal override Task<List<T1>> RawExecuteInsertedAsync() {
|
||||
var sql = this.ToSql();
|
||||
@ -71,7 +77,9 @@ namespace FreeSql.PostgreSQL.Curd {
|
||||
sb.Append(_commonUtils.QuoteReadColumn(col.CsType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||
++colidx;
|
||||
}
|
||||
return await _orm.Ado.QueryAsync<T1>(_transaction, CommandType.Text, sb.ToString(), _params);
|
||||
var ret = await _orm.Ado.QueryAsync<T1>(_transaction, CommandType.Text, sb.ToString(), _params);
|
||||
this.ClearData();
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -27,7 +27,9 @@ namespace FreeSql.PostgreSQL.Curd {
|
||||
sb.Append(_commonUtils.QuoteReadColumn(col.CsType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||
++colidx;
|
||||
}
|
||||
return _orm.Ado.Query<T1>(_transaction, CommandType.Text, sb.ToString(), _params.Concat(_paramsSource).ToArray());
|
||||
var ret = _orm.Ado.Query<T1>(_transaction, CommandType.Text, sb.ToString(), _params.Concat(_paramsSource).ToArray());
|
||||
this.ClearData();
|
||||
return ret;
|
||||
}
|
||||
async public override Task<List<T1>> ExecuteUpdatedAsync() {
|
||||
var sql = this.ToSql();
|
||||
@ -42,7 +44,9 @@ namespace FreeSql.PostgreSQL.Curd {
|
||||
sb.Append(_commonUtils.QuoteReadColumn(col.CsType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||
++colidx;
|
||||
}
|
||||
return await _orm.Ado.QueryAsync<T1>(_transaction, CommandType.Text, sb.ToString(), _params.Concat(_paramsSource).ToArray());
|
||||
var ret = await _orm.Ado.QueryAsync<T1>(_transaction, CommandType.Text, sb.ToString(), _params.Concat(_paramsSource).ToArray());
|
||||
this.ClearData();
|
||||
return ret;
|
||||
}
|
||||
|
||||
protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys) {
|
||||
|
@ -30,7 +30,9 @@ namespace FreeSql.SqlServer.Curd {
|
||||
sb.Insert(0, sql.Substring(0, validx));
|
||||
sb.Append(sql.Substring(validx));
|
||||
|
||||
return _orm.Ado.Query<T1>(_transaction, CommandType.Text, sb.ToString(), _params.ToArray());
|
||||
var ret = _orm.Ado.Query<T1>(_transaction, CommandType.Text, sb.ToString(), _params.ToArray());
|
||||
this.ClearData();
|
||||
return ret;
|
||||
}
|
||||
async public override Task<List<T1>> ExecuteDeletedAsync() {
|
||||
var sql = this.ToSql();
|
||||
@ -50,7 +52,9 @@ namespace FreeSql.SqlServer.Curd {
|
||||
sb.Insert(0, sql.Substring(0, validx));
|
||||
sb.Append(sql.Substring(validx));
|
||||
|
||||
return await _orm.Ado.QueryAsync<T1>(_transaction, CommandType.Text, sb.ToString(), _params.ToArray());
|
||||
var ret = await _orm.Ado.QueryAsync<T1>(_transaction, CommandType.Text, sb.ToString(), _params.ToArray());
|
||||
this.ClearData();
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -26,13 +26,17 @@ namespace FreeSql.SqlServer.Curd {
|
||||
var sql = this.ToSql();
|
||||
if (string.IsNullOrEmpty(sql)) return 0;
|
||||
|
||||
return long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_transaction, CommandType.Text, string.Concat(sql, "; SELECT SCOPE_IDENTITY();"), _params)), out var trylng) ? trylng : 0;
|
||||
var id = long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_transaction, CommandType.Text, string.Concat(sql, "; SELECT SCOPE_IDENTITY();"), _params)), out var trylng) ? trylng : 0;
|
||||
this.ClearData();
|
||||
return id;
|
||||
}
|
||||
async internal override Task<long> RawExecuteIdentityAsync() {
|
||||
var sql = this.ToSql();
|
||||
if (string.IsNullOrEmpty(sql)) return 0;
|
||||
|
||||
return long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_transaction, CommandType.Text, string.Concat(sql, "; SELECT SCOPE_IDENTITY();"), _params)), out var trylng) ? trylng : 0;
|
||||
var id = long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_transaction, CommandType.Text, string.Concat(sql, "; SELECT SCOPE_IDENTITY();"), _params)), out var trylng) ? trylng : 0;
|
||||
this.ClearData();
|
||||
return id;
|
||||
}
|
||||
|
||||
internal override List<T1> RawExecuteInserted() {
|
||||
@ -53,7 +57,9 @@ namespace FreeSql.SqlServer.Curd {
|
||||
sb.Insert(0, sql.Substring(0, validx + 1));
|
||||
sb.Append(sql.Substring(validx + 1));
|
||||
|
||||
return _orm.Ado.Query<T1>(_transaction, CommandType.Text, sb.ToString(), _params);
|
||||
var ret = _orm.Ado.Query<T1>(_transaction, CommandType.Text, sb.ToString(), _params);
|
||||
this.ClearData();
|
||||
return ret;
|
||||
}
|
||||
async internal override Task<List<T1>> RawExecuteInsertedAsync() {
|
||||
var sql = this.ToSql();
|
||||
@ -73,7 +79,9 @@ namespace FreeSql.SqlServer.Curd {
|
||||
sb.Insert(0, sql.Substring(0, validx + 1));
|
||||
sb.Append(sql.Substring(validx + 1));
|
||||
|
||||
return await _orm.Ado.QueryAsync<T1>(_transaction, CommandType.Text, sb.ToString(), _params);
|
||||
var ret = await _orm.Ado.QueryAsync<T1>(_transaction, CommandType.Text, sb.ToString(), _params);
|
||||
this.ClearData();
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,281 +0,0 @@
|
||||
//using FreeSql.Internal;
|
||||
//using System;
|
||||
//using System.Collections.Generic;
|
||||
//using System.Data;
|
||||
//using System.Data.Common;
|
||||
//using System.Linq;
|
||||
//using System.Text;
|
||||
//using System.Threading.Tasks;
|
||||
|
||||
//namespace FreeSql.SqlServer.Curd {
|
||||
|
||||
// class SqlServerInsert<T1> : Internal.CommonProvider.InsertProvider<T1> where T1 : class {
|
||||
// public SqlServerInsert(IFreeSql orm, CommonUtils commonUtils, CommonExpression commonExpression)
|
||||
// : base(orm, commonUtils, commonExpression) {
|
||||
// }
|
||||
|
||||
// public override int ExecuteAffrows() {
|
||||
// var sql = this.ToSql2100();
|
||||
// switch (sql.Count) {
|
||||
// case 0: return 0;
|
||||
// case 1: return _orm.Ado.ExecuteNonQuery(_transaction, CommandType.Text, sql[0].Item1, sql[0].Item2);
|
||||
// default:
|
||||
// var affrows = 0;
|
||||
// if (_transaction == null) {
|
||||
// using (var conn = _orm.Ado.MasterPool.Get()) {
|
||||
// var tran = conn.Value.BeginTransaction();
|
||||
// try {
|
||||
// foreach (var s in sql)
|
||||
// affrows += _orm.Ado.ExecuteNonQuery(tran, CommandType.Text, s.Item1, s.Item2);
|
||||
// tran.Commit();
|
||||
// } catch {
|
||||
// tran.Rollback();
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
// foreach (var s in sql)
|
||||
// affrows += _orm.Ado.ExecuteNonQuery(_transaction, CommandType.Text, s.Item1, s.Item2);
|
||||
// }
|
||||
// return affrows;
|
||||
// }
|
||||
// }
|
||||
// async public override Task<int> ExecuteAffrowsAsync() {
|
||||
// var sql = this.ToSql2100();
|
||||
// switch (sql.Count) {
|
||||
// case 0: return 0;
|
||||
// case 1: return await _orm.Ado.ExecuteNonQueryAsync(_transaction, CommandType.Text, sql[0].Item1, sql[0].Item2);
|
||||
// default:
|
||||
// var affrows = 0;
|
||||
// if (_transaction == null) {
|
||||
// using (var conn = await _orm.Ado.MasterPool.GetAsync()) {
|
||||
// var tran = conn.Value.BeginTransaction();
|
||||
// try {
|
||||
// foreach (var s in sql)
|
||||
// affrows += await _orm.Ado.ExecuteNonQueryAsync(tran, CommandType.Text, s.Item1, s.Item2);
|
||||
// tran.Commit();
|
||||
// } catch {
|
||||
// tran.Rollback();
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
// foreach (var s in sql)
|
||||
// affrows += await _orm.Ado.ExecuteNonQueryAsync(_transaction, CommandType.Text, s.Item1, s.Item2);
|
||||
// }
|
||||
// return affrows;
|
||||
// }
|
||||
// }
|
||||
|
||||
// public override long ExecuteIdentity() {
|
||||
// var sql = this.ToSql2100();
|
||||
// switch (sql.Count) {
|
||||
// case 0: return 0;
|
||||
// case 1:
|
||||
// if (string.IsNullOrEmpty(sql[0].Item1)) return 0;
|
||||
// return long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_transaction, CommandType.Text, string.Concat(sql[0].Item1, "; SELECT SCOPE_IDENTITY();"), sql[0].Item2)), out var trylng) ? trylng : 0;
|
||||
// default:
|
||||
// long ret = 0;
|
||||
// if (_transaction == null) {
|
||||
// using (var conn = _orm.Ado.MasterPool.Get()) {
|
||||
// var tran = conn.Value.BeginTransaction();
|
||||
// try {
|
||||
// for (var a = 0; a < sql.Count; a++) {
|
||||
// var s = sql[a];
|
||||
// if (a < sql.Count - 1) _orm.Ado.ExecuteNonQuery(tran, CommandType.Text, s.Item1, s.Item2);
|
||||
// else ret = long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(tran, CommandType.Text, string.Concat(s.Item1, "; SELECT SCOPE_IDENTITY();"), s.Item2)), out trylng) ? trylng : 0;
|
||||
// }
|
||||
// tran.Commit();
|
||||
// } catch {
|
||||
// tran.Rollback();
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
// for (var a = 0; a < sql.Count; a++) {
|
||||
// var s = sql[a];
|
||||
// if (a < sql.Count - 1) _orm.Ado.ExecuteNonQuery(_transaction, CommandType.Text, s.Item1, s.Item2);
|
||||
// else ret = long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_transaction, CommandType.Text, string.Concat(s.Item1, "; SELECT SCOPE_IDENTITY();"), s.Item2)), out trylng) ? trylng : 0;
|
||||
// }
|
||||
// }
|
||||
// return ret;
|
||||
// }
|
||||
// }
|
||||
// async public override Task<long> ExecuteIdentityAsync() {
|
||||
// var sql = this.ToSql2100();
|
||||
// switch (sql.Count) {
|
||||
// case 0: return 0;
|
||||
// case 1:
|
||||
// if (string.IsNullOrEmpty(sql[0].Item1)) return 0;
|
||||
// return long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_transaction, CommandType.Text, string.Concat(sql[0].Item1, "; SELECT SCOPE_IDENTITY();"), sql[0].Item2)), out var trylng) ? trylng : 0;
|
||||
// default:
|
||||
// long ret = 0;
|
||||
// if (_transaction == null) {
|
||||
// using (var conn = await _orm.Ado.MasterPool.GetAsync()) {
|
||||
// var tran = conn.Value.BeginTransaction();
|
||||
// try {
|
||||
// for (var a = 0; a < sql.Count; a++) {
|
||||
// var s = sql[a];
|
||||
// if (a < sql.Count - 1) await _orm.Ado.ExecuteNonQueryAsync(tran, CommandType.Text, s.Item1, s.Item2);
|
||||
// else ret = long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(tran, CommandType.Text, string.Concat(s.Item1, "; SELECT SCOPE_IDENTITY();"), s.Item2)), out trylng) ? trylng : 0;
|
||||
// }
|
||||
// tran.Commit();
|
||||
// } catch {
|
||||
// tran.Rollback();
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
// for (var a = 0; a < sql.Count; a++) {
|
||||
// var s = sql[a];
|
||||
// if (a < sql.Count - 1) await _orm.Ado.ExecuteNonQueryAsync(_transaction, CommandType.Text, s.Item1, s.Item2);
|
||||
// else ret = long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_transaction, CommandType.Text, string.Concat(s.Item1, "; SELECT SCOPE_IDENTITY();"), s.Item2)), out trylng) ? trylng : 0;
|
||||
// }
|
||||
// }
|
||||
// return ret;
|
||||
// }
|
||||
// }
|
||||
|
||||
// public override List<T1> ExecuteInserted() {
|
||||
// string output = null;
|
||||
// Func<string, string> getOutputSql = oldsql => {
|
||||
// if (string.IsNullOrEmpty(output)) {
|
||||
// var sb = new StringBuilder();
|
||||
// sb.Append(" OUTPUT ");
|
||||
// var colidx = 0;
|
||||
// foreach (var col in _table.Columns.Values) {
|
||||
// if (colidx > 0) sb.Append(", ");
|
||||
// sb.Append(_commonUtils.QuoteReadColumn(col.CsType, $"INSERTED.{_commonUtils.QuoteSqlName(col.Attribute.Name)}")).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||
// ++colidx;
|
||||
// }
|
||||
// output = sb.ToString();
|
||||
// }
|
||||
// var validx = oldsql.IndexOf(") VALUES");
|
||||
// if (validx == -1) throw new ArgumentException("找不到 VALUES");
|
||||
// var newsql = new StringBuilder().Append(output);
|
||||
// newsql.Insert(0, oldsql.Substring(0, validx + 1));
|
||||
// newsql.Append(oldsql.Substring(validx + 1));
|
||||
// return newsql.ToString();
|
||||
// };
|
||||
|
||||
// var sql = this.ToSql2100();
|
||||
// switch (sql.Count) {
|
||||
// case 0: return new List<T1>();
|
||||
// case 1:
|
||||
// if (string.IsNullOrEmpty(sql[0].Item1)) return new List<T1>();
|
||||
// return _orm.Ado.Query<T1>(_transaction, CommandType.Text, getOutputSql(sql[0].Item1), sql[0].Item2);
|
||||
// default:
|
||||
// var ret = new List<T1>();
|
||||
// if (_transaction == null) {
|
||||
// using (var conn = _orm.Ado.MasterPool.Get()) {
|
||||
// var tran = conn.Value.BeginTransaction();
|
||||
// try {
|
||||
// foreach (var s in sql)
|
||||
// ret.AddRange(_orm.Ado.Query<T1>(tran, CommandType.Text, getOutputSql(s.Item1), s.Item2));
|
||||
// tran.Commit();
|
||||
// } catch {
|
||||
// tran.Rollback();
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
// foreach (var s in sql)
|
||||
// ret.AddRange(_orm.Ado.Query<T1>(_transaction, CommandType.Text, getOutputSql(s.Item1), s.Item2));
|
||||
// }
|
||||
// return ret;
|
||||
// }
|
||||
// }
|
||||
// async public override Task<List<T1>> ExecuteInsertedAsync() {
|
||||
// string output = null;
|
||||
// Func<string, string> getOutputSql = oldsql => {
|
||||
// if (string.IsNullOrEmpty(output)) {
|
||||
// var sb = new StringBuilder();
|
||||
// sb.Append(" OUTPUT ");
|
||||
// var colidx = 0;
|
||||
// foreach (var col in _table.Columns.Values) {
|
||||
// if (colidx > 0) sb.Append(", ");
|
||||
// sb.Append(_commonUtils.QuoteReadColumn(col.CsType, $"INSERTED.{_commonUtils.QuoteSqlName(col.Attribute.Name)}")).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||
// ++colidx;
|
||||
// }
|
||||
// output = sb.ToString();
|
||||
// }
|
||||
// var validx = oldsql.IndexOf(") VALUES");
|
||||
// if (validx == -1) throw new ArgumentException("找不到 VALUES");
|
||||
// var newsql = new StringBuilder().Append(output);
|
||||
// newsql.Insert(0, oldsql.Substring(0, validx + 1));
|
||||
// newsql.Append(oldsql.Substring(validx + 1));
|
||||
// return oldsql;
|
||||
// };
|
||||
|
||||
// var sql = this.ToSql2100();
|
||||
// switch (sql.Count) {
|
||||
// case 0: return new List<T1>();
|
||||
// case 1:
|
||||
// if (string.IsNullOrEmpty(sql[0].Item1)) return new List<T1>();
|
||||
// return await _orm.Ado.QueryAsync<T1>(_transaction, CommandType.Text, getOutputSql(sql[0].Item1), sql[0].Item2);
|
||||
// default:
|
||||
// var ret = new List<T1>();
|
||||
// if (_transaction == null) {
|
||||
// using (var conn = await _orm.Ado.MasterPool.GetAsync()) {
|
||||
// var tran = conn.Value.BeginTransaction();
|
||||
// try {
|
||||
// foreach (var s in sql)
|
||||
// ret.AddRange(await _orm.Ado.QueryAsync<T1>(tran, CommandType.Text, getOutputSql(s.Item1), s.Item2));
|
||||
// tran.Commit();
|
||||
// } catch {
|
||||
// tran.Rollback();
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
// foreach (var s in sql)
|
||||
// ret.AddRange(await _orm.Ado.QueryAsync<T1>(_transaction, CommandType.Text, getOutputSql(s.Item1), s.Item2));
|
||||
// }
|
||||
// return ret;
|
||||
// }
|
||||
// }
|
||||
|
||||
// public List<(string, DbParameter[])> ToSql2100() { //传入的请求具有过多的参数。该服务器支持最多 2100 个参数。请减少参数的数目,然后重新发送该请求。
|
||||
// if (_source == null || _source.Any() == false) return new List<(string, DbParameter[])>();
|
||||
// var ret = new List<(string, DbParameter[])>();
|
||||
// var sbhead = new StringBuilder();
|
||||
// sbhead.Append("INSERT INTO ").Append(_commonUtils.QuoteSqlName(_tableRule?.Invoke(_table.DbName) ?? _table.DbName)).Append("(");
|
||||
// var colidx = 0;
|
||||
// foreach (var col in _table.Columns.Values)
|
||||
// if (col.Attribute.IsIdentity == false && _ignore.ContainsKey(col.Attribute.Name) == false) {
|
||||
// if (colidx > 0) sbhead.Append(", ");
|
||||
// sbhead.Append(_commonUtils.QuoteSqlName(col.Attribute.Name));
|
||||
// ++colidx;
|
||||
// }
|
||||
// sbhead.Append(") VALUES");
|
||||
// var sbh = sbhead.ToString();
|
||||
|
||||
// var sbsql = new StringBuilder().Append(sbh);
|
||||
// var sbsqlParams = new List<DbParameter>();
|
||||
// var didx = 0;
|
||||
// foreach (var d in _source) {
|
||||
// if ((didx + 1) * colidx >= 2100) {
|
||||
// ret.Add((sbsql.ToString(), sbsqlParams.ToArray()));
|
||||
// sbsql.Clear().Append(sbh);
|
||||
// sbsqlParams.Clear();
|
||||
// didx = 0;
|
||||
// }
|
||||
|
||||
// if (sbsqlParams.Count > 0) sbsql.Append(", ");
|
||||
// sbsql.Append("(");
|
||||
// var colidx2 = 0;
|
||||
// foreach (var col in _table.Columns.Values)
|
||||
// if (col.Attribute.IsIdentity == false && _ignore.ContainsKey(col.Attribute.Name) == false) {
|
||||
// if (colidx2 > 0) sbsql.Append(", ");
|
||||
// sbsql.Append(_commonUtils.QuoteWriteParamter(col.CsType, $"{_commonUtils.QuoteParamterName(col.CsName)}{didx}"));
|
||||
// object val = null;
|
||||
// if (_table.Properties.TryGetValue(col.CsName, out var tryp)) {
|
||||
// val = tryp.GetValue(d);
|
||||
// if (col.Attribute.IsPrimary && (col.CsType == typeof(Guid) || col.CsType == typeof(Guid?))
|
||||
// && (val == null || (Guid)val == Guid.Empty)) tryp.SetValue(d, val = FreeUtil.NewMongodbId());
|
||||
// }
|
||||
// sbsqlParams.Add(_commonUtils.AppendParamter(null, $"{col.CsName}{didx}", col.CsType, val));
|
||||
// ++colidx2;
|
||||
// }
|
||||
// sbsql.Append(")");
|
||||
// ++didx;
|
||||
// }
|
||||
// ret.Add((sbsql.ToString(), sbsqlParams.ToArray()));
|
||||
// return ret;
|
||||
// }
|
||||
// }
|
||||
//}
|
@ -33,7 +33,9 @@ namespace FreeSql.SqlServer.Curd {
|
||||
sb.Insert(0, sql.Substring(0, validx));
|
||||
sb.Append(sql.Substring(validx));
|
||||
|
||||
return _orm.Ado.Query<T1>(_transaction, CommandType.Text, sb.ToString(), _params.Concat(_paramsSource).ToArray());
|
||||
var ret = _orm.Ado.Query<T1>(_transaction, CommandType.Text, sb.ToString(), _params.Concat(_paramsSource).ToArray());
|
||||
this.ClearData();
|
||||
return ret;
|
||||
}
|
||||
async public override Task<List<T1>> ExecuteUpdatedAsync() {
|
||||
var sql = this.ToSql();
|
||||
@ -53,7 +55,9 @@ namespace FreeSql.SqlServer.Curd {
|
||||
sb.Insert(0, sql.Substring(0, validx));
|
||||
sb.Append(sql.Substring(validx));
|
||||
|
||||
return await _orm.Ado.QueryAsync<T1>(_transaction, CommandType.Text, sb.ToString(), _params.Concat(_paramsSource).ToArray());
|
||||
var ret = await _orm.Ado.QueryAsync<T1>(_transaction, CommandType.Text, sb.ToString(), _params.Concat(_paramsSource).ToArray());
|
||||
this.ClearData();
|
||||
return ret;
|
||||
}
|
||||
|
||||
protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys) {
|
||||
|
@ -25,19 +25,24 @@ namespace FreeSql.Sqlite.Curd {
|
||||
var sql = this.ToSql();
|
||||
if (string.IsNullOrEmpty(sql)) return 0;
|
||||
|
||||
return long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_transaction, CommandType.Text, string.Concat(sql, "; SELECT last_insert_rowid();"), _params)), out var trylng) ? trylng : 0;
|
||||
var id = long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_transaction, CommandType.Text, string.Concat(sql, "; SELECT last_insert_rowid();"), _params)), out var trylng) ? trylng : 0;
|
||||
this.ClearData();
|
||||
return id;
|
||||
}
|
||||
async internal override Task<long> RawExecuteIdentityAsync() {
|
||||
var sql = this.ToSql();
|
||||
if (string.IsNullOrEmpty(sql)) return 0;
|
||||
|
||||
return long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_transaction, CommandType.Text, string.Concat(sql, "; SELECT last_insert_rowid();"), _params)), out var trylng) ? trylng : 0;
|
||||
var id = long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_transaction, CommandType.Text, string.Concat(sql, "; SELECT last_insert_rowid();"), _params)), out var trylng) ? trylng : 0;
|
||||
this.ClearData();
|
||||
return id;
|
||||
}
|
||||
internal override List<T1> RawExecuteInserted() {
|
||||
var sql = this.ToSql();
|
||||
if (string.IsNullOrEmpty(sql)) return new List<T1>();
|
||||
|
||||
this.ExecuteAffrows();
|
||||
this.ClearData();
|
||||
return _source;
|
||||
}
|
||||
async internal override Task<List<T1>> RawExecuteInsertedAsync() {
|
||||
@ -45,6 +50,7 @@ namespace FreeSql.Sqlite.Curd {
|
||||
if (string.IsNullOrEmpty(sql)) return new List<T1>();
|
||||
|
||||
await this.ExecuteAffrowsAsync();
|
||||
this.ClearData();
|
||||
return _source;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user