mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 18:52:50 +08:00
- 增加 OnInserted、OnUpdated、OnDeleted、OnSelected 等 AOP 方法;
This commit is contained in:
parent
e94b78199d
commit
33e992d96b
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.0</TargetFramework>
|
<TargetFramework>netstandard2.0</TargetFramework>
|
||||||
<Version>0.5.7</Version>
|
<Version>0.5.8</Version>
|
||||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||||
<Authors>YeXiangQin</Authors>
|
<Authors>YeXiangQin</Authors>
|
||||||
<Description>FreeSql is the most convenient ORM in dotnet. It supports Mysql, Postgresql, SqlServer, Oracle and Sqlite.</Description>
|
<Description>FreeSql is the most convenient ORM in dotnet. It supports Mysql, Postgresql, SqlServer, Oracle and Sqlite.</Description>
|
||||||
|
@ -1882,6 +1882,26 @@
|
|||||||
自定义实体的属性配置,方便和多个 ORM 共同使用
|
自定义实体的属性配置,方便和多个 ORM 共同使用
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:FreeSql.IAop.OnUpdated">
|
||||||
|
<summary>
|
||||||
|
IUpdate 执行成功后触发
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.IAop.OnInserted">
|
||||||
|
<summary>
|
||||||
|
IInsert 执行成功后触发
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.IAop.OnDeleted">
|
||||||
|
<summary>
|
||||||
|
IDeleted 执行成功后触发
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.IAop.OnSelected">
|
||||||
|
<summary>
|
||||||
|
ISelect 执行成功后触发
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:FreeSql.AopToListEventArgs.List">
|
<member name="P:FreeSql.AopToListEventArgs.List">
|
||||||
<summary>
|
<summary>
|
||||||
可重新装饰的引用数据
|
可重新装饰的引用数据
|
||||||
@ -1932,6 +1952,61 @@
|
|||||||
实体的属性配置
|
实体的属性配置
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:FreeSql.AopOnUpdatedEventArgs.Source">
|
||||||
|
<summary>
|
||||||
|
更新的实体
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.AopOnInsertedEventArgs.Identity">
|
||||||
|
<summary>
|
||||||
|
执行 ExecuteIdentity 方法时有效
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.AopOnDeletedEventArgs.EntityType">
|
||||||
|
<summary>
|
||||||
|
实体类型
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.AopOnDeletedEventArgs.Sql">
|
||||||
|
<summary>
|
||||||
|
执行的 SQL
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.AopOnDeletedEventArgs.DbParms">
|
||||||
|
<summary>
|
||||||
|
参数化命令
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.AopOnDeletedEventArgs.Affrows">
|
||||||
|
<summary>
|
||||||
|
执行 ExecuteAffrows 方法时有效
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.AopOnDeletedEventArgs.Returning">
|
||||||
|
<summary>
|
||||||
|
执行 ExecuteDeleted 方法时有效
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.AopOnSelectedEventArgs.EntityType">
|
||||||
|
<summary>
|
||||||
|
实体类型
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.AopOnSelectedEventArgs.Sql">
|
||||||
|
<summary>
|
||||||
|
执行的 SQL
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.AopOnSelectedEventArgs.DbParms">
|
||||||
|
<summary>
|
||||||
|
参数化命令
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.AopOnSelectedEventArgs.ReturnData">
|
||||||
|
<summary>
|
||||||
|
查询返回的对象
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:FreeSql.ICache.Serialize">
|
<member name="P:FreeSql.ICache.Serialize">
|
||||||
<summary>
|
<summary>
|
||||||
缓存数据时序列化方法,若无设置则默认使用 Json.net
|
缓存数据时序列化方法,若无设置则默认使用 Json.net
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
using FreeSql.DatabaseModel;
|
using FreeSql.DatabaseModel;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Data.Common;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
|
||||||
@ -31,6 +32,23 @@ namespace FreeSql {
|
|||||||
/// 自定义实体的属性配置,方便和多个 ORM 共同使用
|
/// 自定义实体的属性配置,方便和多个 ORM 共同使用
|
||||||
/// </summary>
|
/// </summary>
|
||||||
EventHandler<AopConfigEntityPropertyEventArgs> ConfigEntityProperty { get; set; }
|
EventHandler<AopConfigEntityPropertyEventArgs> ConfigEntityProperty { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// IUpdate 执行成功后触发
|
||||||
|
/// </summary>
|
||||||
|
EventHandler<AopOnUpdatedEventArgs> OnUpdated { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// IInsert 执行成功后触发
|
||||||
|
/// </summary>
|
||||||
|
EventHandler<AopOnInsertedEventArgs> OnInserted { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// IDeleted 执行成功后触发
|
||||||
|
/// </summary>
|
||||||
|
EventHandler<AopOnDeletedEventArgs> OnDeleted { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// ISelect 执行成功后触发
|
||||||
|
/// </summary>
|
||||||
|
EventHandler<AopOnSelectedEventArgs> OnSelected { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class AopToListEventArgs : EventArgs {
|
public class AopToListEventArgs : EventArgs {
|
||||||
@ -107,4 +125,84 @@ namespace FreeSql {
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public ColumnAttribute ModifyResult { get; }
|
public ColumnAttribute ModifyResult { get; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class AopOnUpdatedEventArgs : AopOnDeletedEventArgs {
|
||||||
|
public AopOnUpdatedEventArgs(Type entityType, object source, string sql, DbParameter[] dbParms, int affrows, object returning)
|
||||||
|
: base(entityType, sql, dbParms, affrows, returning) {
|
||||||
|
this.Source = source;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新的实体
|
||||||
|
/// </summary>
|
||||||
|
public object Source { get; }
|
||||||
|
}
|
||||||
|
public class AopOnInsertedEventArgs : AopOnUpdatedEventArgs {
|
||||||
|
public AopOnInsertedEventArgs(Type entityType, object source, string sql, DbParameter[] dbParms, int affrows, long identity, object returning)
|
||||||
|
: base(entityType, source, sql, dbParms, affrows, returning) {
|
||||||
|
this.Identity = identity;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 执行 ExecuteIdentity 方法时有效
|
||||||
|
/// </summary>
|
||||||
|
public long? Identity { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AopOnDeletedEventArgs : EventArgs {
|
||||||
|
public AopOnDeletedEventArgs(Type entityType, string sql, DbParameter[] dbParms, int affrows, object returning) {
|
||||||
|
this.EntityType = entityType;
|
||||||
|
this.Sql = sql;
|
||||||
|
this.DbParms = dbParms;
|
||||||
|
this.Affrows = affrows;
|
||||||
|
this.Returning = returning;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 实体类型
|
||||||
|
/// </summary>
|
||||||
|
public Type EntityType { get; }
|
||||||
|
/// <summary>
|
||||||
|
/// 执行的 SQL
|
||||||
|
/// </summary>
|
||||||
|
public string Sql { get; }
|
||||||
|
/// <summary>
|
||||||
|
/// 参数化命令
|
||||||
|
/// </summary>
|
||||||
|
public DbParameter[] DbParms { get; }
|
||||||
|
/// <summary>
|
||||||
|
/// 执行 ExecuteAffrows 方法时有效
|
||||||
|
/// </summary>
|
||||||
|
public int Affrows { get; }
|
||||||
|
/// <summary>
|
||||||
|
/// 执行 ExecuteDeleted 方法时有效
|
||||||
|
/// </summary>
|
||||||
|
public object Returning { get; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AopOnSelectedEventArgs : EventArgs {
|
||||||
|
public AopOnSelectedEventArgs(Type entityType, string sql, DbParameter[] dbParms, object returnData) {
|
||||||
|
this.EntityType = entityType;
|
||||||
|
this.Sql = sql;
|
||||||
|
this.DbParms = dbParms;
|
||||||
|
this.ReturnData = returnData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 实体类型
|
||||||
|
/// </summary>
|
||||||
|
public Type EntityType { get; }
|
||||||
|
/// <summary>
|
||||||
|
/// 执行的 SQL
|
||||||
|
/// </summary>
|
||||||
|
public string Sql { get; }
|
||||||
|
/// <summary>
|
||||||
|
/// 参数化命令
|
||||||
|
/// </summary>
|
||||||
|
public DbParameter[] DbParms { get; }
|
||||||
|
/// <summary>
|
||||||
|
/// 查询返回的对象
|
||||||
|
/// </summary>
|
||||||
|
public object ReturnData { get; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,5 +11,9 @@ namespace FreeSql.Internal.CommonProvider {
|
|||||||
public EventHandler<AopParseExpressionEventArgs> ParseExpression { get; set; }
|
public EventHandler<AopParseExpressionEventArgs> ParseExpression { get; set; }
|
||||||
public EventHandler<AopConfigEntityEventArgs> ConfigEntity { get; set; }
|
public EventHandler<AopConfigEntityEventArgs> ConfigEntity { get; set; }
|
||||||
public EventHandler<AopConfigEntityPropertyEventArgs> ConfigEntityProperty { get; set; }
|
public EventHandler<AopConfigEntityPropertyEventArgs> ConfigEntityProperty { get; set; }
|
||||||
|
public EventHandler<AopOnUpdatedEventArgs> OnUpdated { get; set; }
|
||||||
|
public EventHandler<AopOnInsertedEventArgs> OnInserted { get; set; }
|
||||||
|
public EventHandler<AopOnDeletedEventArgs> OnDeleted { get; set; }
|
||||||
|
public EventHandler<AopOnSelectedEventArgs> OnSelected { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,6 @@ namespace FreeSql.Internal.CommonProvider {
|
|||||||
protected IFreeSql _orm;
|
protected IFreeSql _orm;
|
||||||
protected CommonUtils _commonUtils;
|
protected CommonUtils _commonUtils;
|
||||||
protected CommonExpression _commonExpression;
|
protected CommonExpression _commonExpression;
|
||||||
protected List<T1> _source = new List<T1>();
|
|
||||||
protected TableInfo _table;
|
protected TableInfo _table;
|
||||||
protected Func<string, string> _tableRule;
|
protected Func<string, string> _tableRule;
|
||||||
protected StringBuilder _where = new StringBuilder();
|
protected StringBuilder _where = new StringBuilder();
|
||||||
@ -32,7 +31,6 @@ namespace FreeSql.Internal.CommonProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void ClearData() {
|
protected void ClearData() {
|
||||||
_source.Clear();
|
|
||||||
_where.Clear();
|
_where.Clear();
|
||||||
_whereTimes = 0;
|
_whereTimes = 0;
|
||||||
_params.Clear();
|
_params.Clear();
|
||||||
@ -52,14 +50,18 @@ namespace FreeSql.Internal.CommonProvider {
|
|||||||
public int ExecuteAffrows() {
|
public int ExecuteAffrows() {
|
||||||
var sql = this.ToSql();
|
var sql = this.ToSql();
|
||||||
if (string.IsNullOrEmpty(sql)) return 0;
|
if (string.IsNullOrEmpty(sql)) return 0;
|
||||||
var affrows = _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params.ToArray());
|
var dbParms = _params.ToArray();
|
||||||
|
var affrows = _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnDeleted?.Invoke(this, new AopOnDeletedEventArgs(_table.Type, sql, dbParms, affrows, null));
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
async public Task<int> ExecuteAffrowsAsync() {
|
async public Task<int> ExecuteAffrowsAsync() {
|
||||||
var sql = this.ToSql();
|
var sql = this.ToSql();
|
||||||
if (string.IsNullOrEmpty(sql)) return 0;
|
if (string.IsNullOrEmpty(sql)) return 0;
|
||||||
var affrows = await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params.ToArray());
|
var dbParms = _params.ToArray();
|
||||||
|
var affrows = await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnDeleted?.Invoke(this, new AopOnDeletedEventArgs(_table.Type, sql, dbParms, affrows, null));
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
|
@ -323,8 +323,18 @@ namespace FreeSql.Internal.CommonProvider {
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
internal int RawExecuteAffrows() => _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, ToSql(), _params);
|
internal int RawExecuteAffrows() {
|
||||||
internal Task<int> RawExecuteAffrowsAsync() => _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, ToSql(), _params);
|
var sql = ToSql();
|
||||||
|
var affrows = _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, affrows, 0, null));
|
||||||
|
return affrows;
|
||||||
|
}
|
||||||
|
async internal Task<int> RawExecuteAffrowsAsync() {
|
||||||
|
var sql = ToSql();
|
||||||
|
var affrows = await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, affrows, 0, null));
|
||||||
|
return affrows;
|
||||||
|
}
|
||||||
internal abstract long RawExecuteIdentity();
|
internal abstract long RawExecuteIdentity();
|
||||||
internal abstract Task<long> RawExecuteIdentityAsync();
|
internal abstract Task<long> RawExecuteIdentityAsync();
|
||||||
internal abstract List<T1> RawExecuteInserted();
|
internal abstract List<T1> RawExecuteInserted();
|
||||||
|
@ -215,15 +215,23 @@ namespace FreeSql.Internal.CommonProvider {
|
|||||||
var sql = this.ToSql(field);
|
var sql = this.ToSql(field);
|
||||||
if (_cache.seconds > 0 && string.IsNullOrEmpty(_cache.key)) _cache.key = sql;
|
if (_cache.seconds > 0 && string.IsNullOrEmpty(_cache.key)) _cache.key = sql;
|
||||||
|
|
||||||
return _orm.Cache.Shell(_cache.key, _cache.seconds, () =>
|
return _orm.Cache.Shell(_cache.key, _cache.seconds, () => {
|
||||||
_orm.Ado.ExecuteDataTable(_connection, _transaction, CommandType.Text, sql, _params.ToArray()));
|
var dbParms = _params.ToArray();
|
||||||
|
var ret = _orm.Ado.ExecuteDataTable(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnSelected?.Invoke(this, new AopOnSelectedEventArgs(_tables[0].Table.Type, sql, dbParms, ret));
|
||||||
|
return ret;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
public Task<DataTable> ToDataTableAsync(string field = null) {
|
public Task<DataTable> ToDataTableAsync(string field = null) {
|
||||||
var sql = this.ToSql(field);
|
var sql = this.ToSql(field);
|
||||||
if (_cache.seconds > 0 && string.IsNullOrEmpty(_cache.key)) _cache.key = sql;
|
if (_cache.seconds > 0 && string.IsNullOrEmpty(_cache.key)) _cache.key = sql;
|
||||||
|
|
||||||
return _orm.Cache.ShellAsync(_cache.key, _cache.seconds, () =>
|
return _orm.Cache.ShellAsync(_cache.key, _cache.seconds, async () => {
|
||||||
_orm.Ado.ExecuteDataTableAsync(_connection, _transaction, CommandType.Text, sql, _params.ToArray()));
|
var dbParms = _params.ToArray();
|
||||||
|
var ret = await _orm.Ado.ExecuteDataTableAsync(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnSelected?.Invoke(this, new AopOnSelectedEventArgs(_tables[0].Table.Type, sql, dbParms, ret));
|
||||||
|
return ret;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<TTuple> ToList<TTuple>(string field) {
|
public List<TTuple> ToList<TTuple>(string field) {
|
||||||
@ -231,12 +239,14 @@ namespace FreeSql.Internal.CommonProvider {
|
|||||||
if (_cache.seconds > 0 && string.IsNullOrEmpty(_cache.key)) _cache.key = sql;
|
if (_cache.seconds > 0 && string.IsNullOrEmpty(_cache.key)) _cache.key = sql;
|
||||||
|
|
||||||
return _orm.Cache.Shell(_cache.key, _cache.seconds, () => {
|
return _orm.Cache.Shell(_cache.key, _cache.seconds, () => {
|
||||||
List<TTuple> ret = new List<TTuple>();
|
var ret = new List<TTuple>();
|
||||||
Type type = typeof(TTuple);
|
var type = typeof(TTuple);
|
||||||
|
var dbParms = _params.ToArray();
|
||||||
_orm.Ado.ExecuteReader(_connection, _transaction, dr => {
|
_orm.Ado.ExecuteReader(_connection, _transaction, dr => {
|
||||||
var read = Utils.ExecuteArrayRowReadClassOrTuple(type, null, dr, 0, _commonUtils);
|
var read = Utils.ExecuteArrayRowReadClassOrTuple(type, null, dr, 0, _commonUtils);
|
||||||
ret.Add((TTuple) read.Value);
|
ret.Add((TTuple) read.Value);
|
||||||
}, CommandType.Text, sql, _params.ToArray());
|
}, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnSelected?.Invoke(this, new AopOnSelectedEventArgs(_tables[0].Table.Type, sql, dbParms, ret));
|
||||||
_orm.Aop.ToList?.Invoke(this, new AopToListEventArgs(ret));
|
_orm.Aop.ToList?.Invoke(this, new AopToListEventArgs(ret));
|
||||||
_trackToList?.Invoke(ret);
|
_trackToList?.Invoke(ret);
|
||||||
return ret;
|
return ret;
|
||||||
@ -247,13 +257,15 @@ namespace FreeSql.Internal.CommonProvider {
|
|||||||
if (_cache.seconds > 0 && string.IsNullOrEmpty(_cache.key)) _cache.key = sql;
|
if (_cache.seconds > 0 && string.IsNullOrEmpty(_cache.key)) _cache.key = sql;
|
||||||
|
|
||||||
return _orm.Cache.ShellAsync(_cache.key, _cache.seconds, async () => {
|
return _orm.Cache.ShellAsync(_cache.key, _cache.seconds, async () => {
|
||||||
List<TTuple> ret = new List<TTuple>();
|
var ret = new List<TTuple>();
|
||||||
Type type = typeof(TTuple);
|
var type = typeof(TTuple);
|
||||||
|
var dbParms = _params.ToArray();
|
||||||
await _orm.Ado.ExecuteReaderAsync(_connection, _transaction, dr => {
|
await _orm.Ado.ExecuteReaderAsync(_connection, _transaction, dr => {
|
||||||
var read = Utils.ExecuteArrayRowReadClassOrTuple(type, null, dr, 0, _commonUtils);
|
var read = Utils.ExecuteArrayRowReadClassOrTuple(type, null, dr, 0, _commonUtils);
|
||||||
ret.Add((TTuple) read.Value);
|
ret.Add((TTuple) read.Value);
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}, CommandType.Text, sql, _params.ToArray());
|
}, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnSelected?.Invoke(this, new AopOnSelectedEventArgs(_tables[0].Table.Type, sql, dbParms, ret));
|
||||||
_orm.Aop.ToList?.Invoke(this, new AopToListEventArgs(ret));
|
_orm.Aop.ToList?.Invoke(this, new AopToListEventArgs(ret));
|
||||||
_trackToList?.Invoke(ret);
|
_trackToList?.Invoke(ret);
|
||||||
return ret;
|
return ret;
|
||||||
@ -264,10 +276,12 @@ namespace FreeSql.Internal.CommonProvider {
|
|||||||
if (_cache.seconds > 0 && string.IsNullOrEmpty(_cache.key)) _cache.key = $"{sql}{string.Join("|", _params.Select(a => a.Value))}";
|
if (_cache.seconds > 0 && string.IsNullOrEmpty(_cache.key)) _cache.key = $"{sql}{string.Join("|", _params.Select(a => a.Value))}";
|
||||||
|
|
||||||
return _orm.Cache.Shell(_cache.key, _cache.seconds, () => {
|
return _orm.Cache.Shell(_cache.key, _cache.seconds, () => {
|
||||||
List<T1> ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
|
var dbParms = _params.ToArray();
|
||||||
_orm.Ado.ExecuteReader(_connection, _transaction, dr => {
|
_orm.Ado.ExecuteReader(_connection, _transaction, dr => {
|
||||||
ret.Add(af.Read(_orm, dr));
|
ret.Add(af.Read(_orm, dr));
|
||||||
}, CommandType.Text, sql, _params.ToArray());
|
}, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnSelected?.Invoke(this, new AopOnSelectedEventArgs(_tables[0].Table.Type, sql, dbParms, ret));
|
||||||
_orm.Aop.ToList?.Invoke(this, new AopToListEventArgs(ret));
|
_orm.Aop.ToList?.Invoke(this, new AopToListEventArgs(ret));
|
||||||
_trackToList?.Invoke(ret);
|
_trackToList?.Invoke(ret);
|
||||||
return ret;
|
return ret;
|
||||||
@ -278,11 +292,13 @@ namespace FreeSql.Internal.CommonProvider {
|
|||||||
if (_cache.seconds > 0 && string.IsNullOrEmpty(_cache.key)) _cache.key = $"{sql}{string.Join("|", _params.Select(a => a.Value))}";
|
if (_cache.seconds > 0 && string.IsNullOrEmpty(_cache.key)) _cache.key = $"{sql}{string.Join("|", _params.Select(a => a.Value))}";
|
||||||
|
|
||||||
return await _orm.Cache.ShellAsync(_cache.key, _cache.seconds, async () => {
|
return await _orm.Cache.ShellAsync(_cache.key, _cache.seconds, async () => {
|
||||||
List<T1> ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
|
var dbParms = _params.ToArray();
|
||||||
await _orm.Ado.ExecuteReaderAsync(_connection, _transaction, dr => {
|
await _orm.Ado.ExecuteReaderAsync(_connection, _transaction, dr => {
|
||||||
ret.Add(af.Read(_orm, dr));
|
ret.Add(af.Read(_orm, dr));
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}, CommandType.Text, sql, _params.ToArray());
|
}, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnSelected?.Invoke(this, new AopOnSelectedEventArgs(_tables[0].Table.Type, sql, dbParms, ret));
|
||||||
_orm.Aop.ToList?.Invoke(this, new AopToListEventArgs(ret));
|
_orm.Aop.ToList?.Invoke(this, new AopToListEventArgs(ret));
|
||||||
_trackToList?.Invoke(ret);
|
_trackToList?.Invoke(ret);
|
||||||
return ret;
|
return ret;
|
||||||
@ -309,12 +325,14 @@ namespace FreeSql.Internal.CommonProvider {
|
|||||||
if (_cache.seconds > 0 && string.IsNullOrEmpty(_cache.key)) _cache.key = $"{sql}{string.Join("|", _params.Select(a => a.Value))}";
|
if (_cache.seconds > 0 && string.IsNullOrEmpty(_cache.key)) _cache.key = $"{sql}{string.Join("|", _params.Select(a => a.Value))}";
|
||||||
|
|
||||||
return _orm.Cache.Shell(_cache.key, _cache.seconds, () => {
|
return _orm.Cache.Shell(_cache.key, _cache.seconds, () => {
|
||||||
List<TReturn> ret = new List<TReturn>();
|
var ret = new List<TReturn>();
|
||||||
Type type = typeof(TReturn);
|
var type = typeof(TReturn);
|
||||||
|
var dbParms = _params.ToArray();
|
||||||
_orm.Ado.ExecuteReader(_connection, _transaction, dr => {
|
_orm.Ado.ExecuteReader(_connection, _transaction, dr => {
|
||||||
var index = -1;
|
var index = -1;
|
||||||
ret.Add((TReturn) _commonExpression.ReadAnonymous(af.map, dr, ref index, false));
|
ret.Add((TReturn) _commonExpression.ReadAnonymous(af.map, dr, ref index, false));
|
||||||
}, CommandType.Text, sql, _params.ToArray());
|
}, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnSelected?.Invoke(this, new AopOnSelectedEventArgs(_tables[0].Table.Type, sql, dbParms, ret));
|
||||||
_orm.Aop.ToList?.Invoke(this, new AopToListEventArgs(ret));
|
_orm.Aop.ToList?.Invoke(this, new AopToListEventArgs(ret));
|
||||||
_trackToList?.Invoke(ret);
|
_trackToList?.Invoke(ret);
|
||||||
return ret;
|
return ret;
|
||||||
@ -325,13 +343,15 @@ namespace FreeSql.Internal.CommonProvider {
|
|||||||
if (_cache.seconds > 0 && string.IsNullOrEmpty(_cache.key)) _cache.key = $"{sql}{string.Join("|", _params.Select(a => a.Value))}";
|
if (_cache.seconds > 0 && string.IsNullOrEmpty(_cache.key)) _cache.key = $"{sql}{string.Join("|", _params.Select(a => a.Value))}";
|
||||||
|
|
||||||
return await _orm.Cache.ShellAsync(_cache.key, _cache.seconds, async () => {
|
return await _orm.Cache.ShellAsync(_cache.key, _cache.seconds, async () => {
|
||||||
List<TReturn> ret = new List<TReturn>();
|
var ret = new List<TReturn>();
|
||||||
Type type = typeof(TReturn);
|
var type = typeof(TReturn);
|
||||||
|
var dbParms = _params.ToArray();
|
||||||
await _orm.Ado.ExecuteReaderAsync(_connection, _transaction, dr => {
|
await _orm.Ado.ExecuteReaderAsync(_connection, _transaction, dr => {
|
||||||
var index = -1;
|
var index = -1;
|
||||||
ret.Add((TReturn) _commonExpression.ReadAnonymous(af.map, dr, ref index, false));
|
ret.Add((TReturn) _commonExpression.ReadAnonymous(af.map, dr, ref index, false));
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}, CommandType.Text, sql, _params.ToArray());
|
}, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnSelected?.Invoke(this, new AopOnSelectedEventArgs(_tables[0].Table.Type, sql, dbParms, ret));
|
||||||
_orm.Aop.ToList?.Invoke(this, new AopToListEventArgs(ret));
|
_orm.Aop.ToList?.Invoke(this, new AopToListEventArgs(ret));
|
||||||
_trackToList?.Invoke(ret);
|
_trackToList?.Invoke(ret);
|
||||||
return ret;
|
return ret;
|
||||||
@ -709,8 +729,20 @@ namespace FreeSql.Internal.CommonProvider {
|
|||||||
return this.ToSql(af.field);
|
return this.ToSql(af.field);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected DataTable InternalToDataTable(Expression select) => _orm.Ado.ExecuteDataTable(_connection, _transaction, CommandType.Text, this.InternalToSql<int>(select), _params.ToArray());
|
protected DataTable InternalToDataTable(Expression select) {
|
||||||
protected Task<DataTable> InternalToDataTableAsync(Expression select) => _orm.Ado.ExecuteDataTableAsync(_connection, _transaction, CommandType.Text, this.InternalToSql<int>(select), _params.ToArray());
|
var sql = this.InternalToSql<int>(select);
|
||||||
|
var dbParms = _params.ToArray();
|
||||||
|
var ret = _orm.Ado.ExecuteDataTable(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnSelected?.Invoke(this, new AopOnSelectedEventArgs(_tables[0].Table.Type, sql, dbParms, ret));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
async protected Task<DataTable> InternalToDataTableAsync(Expression select) {
|
||||||
|
var sql = this.InternalToSql<int>(select);
|
||||||
|
var dbParms = _params.ToArray();
|
||||||
|
var ret = await _orm.Ado.ExecuteDataTableAsync(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnSelected?.Invoke(this, new AopOnSelectedEventArgs(_tables[0].Table.Type, sql, dbParms, ret));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
protected TReturn InternalToAggregate<TReturn>(Expression select) {
|
protected TReturn InternalToAggregate<TReturn>(Expression select) {
|
||||||
var map = new ReadAnonymousTypeInfo();
|
var map = new ReadAnonymousTypeInfo();
|
||||||
|
@ -239,14 +239,18 @@ namespace FreeSql.Internal.CommonProvider {
|
|||||||
internal int RawExecuteAffrows() {
|
internal int RawExecuteAffrows() {
|
||||||
var sql = this.ToSql();
|
var sql = this.ToSql();
|
||||||
if (string.IsNullOrEmpty(sql)) return 0;
|
if (string.IsNullOrEmpty(sql)) return 0;
|
||||||
var affrows = _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params.Concat(_paramsSource).ToArray());
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
|
var affrows = _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnUpdated?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, null, sql, dbParms, affrows, 0, null));
|
||||||
ValidateVersionAndThrow(affrows);
|
ValidateVersionAndThrow(affrows);
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
async internal Task<int> RawExecuteAffrowsAsync() {
|
async internal Task<int> RawExecuteAffrowsAsync() {
|
||||||
var sql = this.ToSql();
|
var sql = this.ToSql();
|
||||||
if (string.IsNullOrEmpty(sql)) return 0;
|
if (string.IsNullOrEmpty(sql)) return 0;
|
||||||
var affrows = await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params.Concat(_paramsSource).ToArray());
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
|
var affrows = await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnUpdated?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, null, sql, dbParms, affrows, 0, null));
|
||||||
ValidateVersionAndThrow(affrows);
|
ValidateVersionAndThrow(affrows);
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,10 @@ namespace FreeSql.MySql.Curd {
|
|||||||
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||||
++colidx;
|
++colidx;
|
||||||
}
|
}
|
||||||
var ret = _orm.Ado.Query<T1>(_connection, _transaction, CommandType.Text, sb.ToString(), _params.ToArray());
|
sql = sb.ToString();
|
||||||
|
var dbParms = _params.ToArray();
|
||||||
|
var ret = _orm.Ado.Query<T1>(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnDeleted?.Invoke(this, new AopOnDeletedEventArgs(_table.Type, sql, dbParms, 0, ret));
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -41,7 +44,10 @@ namespace FreeSql.MySql.Curd {
|
|||||||
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||||
++colidx;
|
++colidx;
|
||||||
}
|
}
|
||||||
var ret = await _orm.Ado.QueryAsync<T1>(_connection, _transaction, CommandType.Text, sb.ToString(), _params.ToArray());
|
sql = sb.ToString();
|
||||||
|
var dbParms = _params.ToArray();
|
||||||
|
var ret = await _orm.Ado.QueryAsync<T1>(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnDeleted?.Invoke(this, new AopOnDeletedEventArgs(_table.Type, sql, dbParms, 0, ret));
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -23,13 +23,19 @@ namespace FreeSql.MySql.Curd {
|
|||||||
var sql = this.ToSql();
|
var sql = this.ToSql();
|
||||||
if (string.IsNullOrEmpty(sql)) return 0;
|
if (string.IsNullOrEmpty(sql)) return 0;
|
||||||
|
|
||||||
return long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_connection, _transaction, CommandType.Text, string.Concat(sql, "; SELECT LAST_INSERT_ID();"), _params)), out var trylng) ? trylng : 0;
|
sql = string.Concat(sql, "; SELECT LAST_INSERT_ID();");
|
||||||
|
var ret = long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_connection, _transaction, CommandType.Text, sql, _params)), out var trylng) ? trylng : 0;
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, 0, ret, null));
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
async internal override Task<long> RawExecuteIdentityAsync() {
|
async internal override Task<long> RawExecuteIdentityAsync() {
|
||||||
var sql = this.ToSql();
|
var sql = this.ToSql();
|
||||||
if (string.IsNullOrEmpty(sql)) return 0;
|
if (string.IsNullOrEmpty(sql)) return 0;
|
||||||
|
|
||||||
return long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_connection, _transaction, CommandType.Text, string.Concat(sql, "; SELECT LAST_INSERT_ID();"), _params)), out var trylng) ? trylng : 0;
|
sql = string.Concat(sql, "; SELECT LAST_INSERT_ID();");
|
||||||
|
var ret = long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_connection, _transaction, CommandType.Text, sql, _params)), out var trylng) ? trylng : 0;
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, 0, ret, null));
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
internal override List<T1> RawExecuteInserted() {
|
internal override List<T1> RawExecuteInserted() {
|
||||||
var sql = this.ToSql();
|
var sql = this.ToSql();
|
||||||
@ -44,7 +50,10 @@ namespace FreeSql.MySql.Curd {
|
|||||||
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||||
++colidx;
|
++colidx;
|
||||||
}
|
}
|
||||||
return _orm.Ado.Query<T1>(_connection, _transaction, CommandType.Text, sb.ToString(), _params);
|
sql = sb.ToString();
|
||||||
|
var ret = _orm.Ado.Query<T1>(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, 0, 0, ret));
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
async internal override Task<List<T1>> RawExecuteInsertedAsync() {
|
async internal override Task<List<T1>> RawExecuteInsertedAsync() {
|
||||||
var sql = this.ToSql();
|
var sql = this.ToSql();
|
||||||
@ -59,7 +68,10 @@ namespace FreeSql.MySql.Curd {
|
|||||||
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||||
++colidx;
|
++colidx;
|
||||||
}
|
}
|
||||||
return await _orm.Ado.QueryAsync<T1>(_connection, _transaction, CommandType.Text, sb.ToString(), _params);
|
sql = sb.ToString();
|
||||||
|
var ret = await _orm.Ado.QueryAsync<T1>(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, 0, 0, ret));
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,10 @@ namespace FreeSql.MySql.Curd {
|
|||||||
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||||
++colidx;
|
++colidx;
|
||||||
}
|
}
|
||||||
var ret = _orm.Ado.Query<T1>(_connection, _transaction, CommandType.Text, sb.ToString(), _params.Concat(_paramsSource).ToArray());
|
sql = sb.ToString();
|
||||||
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
|
var ret = _orm.Ado.Query<T1>(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnUpdated?.Invoke(this, new AopOnUpdatedEventArgs(_table.Type, _source, sql, dbParms, 0, ret));
|
||||||
ValidateVersionAndThrow(ret.Count);
|
ValidateVersionAndThrow(ret.Count);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -50,7 +53,10 @@ namespace FreeSql.MySql.Curd {
|
|||||||
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||||
++colidx;
|
++colidx;
|
||||||
}
|
}
|
||||||
var ret = await _orm.Ado.QueryAsync<T1>(_connection, _transaction, CommandType.Text, sb.ToString(), _params.Concat(_paramsSource).ToArray());
|
sql = sb.ToString();
|
||||||
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
|
var ret = await _orm.Ado.QueryAsync<T1>(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnUpdated?.Invoke(this, new AopOnUpdatedEventArgs(_table.Type, _source, sql, dbParms, 0, ret));
|
||||||
ValidateVersionAndThrow(ret.Count);
|
ValidateVersionAndThrow(ret.Count);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -86,13 +86,18 @@ namespace FreeSql.Oracle.Curd {
|
|||||||
|
|
||||||
if (_identCol == null || _source.Count > 1) {
|
if (_identCol == null || _source.Count > 1) {
|
||||||
_orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params);
|
_orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, 0, 0, null));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
var identColName = _commonUtils.QuoteSqlName(_identCol.Attribute.Name);
|
var identColName = _commonUtils.QuoteSqlName(_identCol.Attribute.Name);
|
||||||
var identParam = _commonUtils.AppendParamter(null, $"{_identCol.CsName}99", _identCol.Attribute.MapType, 0) as OracleParameter;
|
var identParam = _commonUtils.AppendParamter(null, $"{_identCol.CsName}99", _identCol.Attribute.MapType, 0) as OracleParameter;
|
||||||
identParam.Direction = ParameterDirection.Output;
|
identParam.Direction = ParameterDirection.Output;
|
||||||
_orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}", _params.Concat(new[] { identParam }).ToArray());
|
sql = $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}";
|
||||||
return long.TryParse(string.Concat(identParam.Value), out var trylng) ? trylng : 0;
|
var dbParms = _params.Concat(new[] { identParam }).ToArray();
|
||||||
|
_orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
long.TryParse(string.Concat(identParam.Value), out var trylng);
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, dbParms, 0, trylng, null));
|
||||||
|
return trylng;
|
||||||
}
|
}
|
||||||
async internal override Task<long> RawExecuteIdentityAsync() {
|
async internal override Task<long> RawExecuteIdentityAsync() {
|
||||||
var sql = this.ToSql();
|
var sql = this.ToSql();
|
||||||
@ -100,13 +105,18 @@ namespace FreeSql.Oracle.Curd {
|
|||||||
|
|
||||||
if (_identCol == null || _source.Count > 1) {
|
if (_identCol == null || _source.Count > 1) {
|
||||||
await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params);
|
await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, 0, 0, null));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
var identColName = _commonUtils.QuoteSqlName(_identCol.Attribute.Name);
|
var identColName = _commonUtils.QuoteSqlName(_identCol.Attribute.Name);
|
||||||
var identParam = _commonUtils.AppendParamter(null, $"{_identCol.CsName}99", _identCol.Attribute.MapType, 0) as OracleParameter;
|
var identParam = _commonUtils.AppendParamter(null, $"{_identCol.CsName}99", _identCol.Attribute.MapType, 0) as OracleParameter;
|
||||||
identParam.Direction = ParameterDirection.Output;
|
identParam.Direction = ParameterDirection.Output;
|
||||||
await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}", _params.Concat(new[] { identParam }).ToArray());
|
sql = $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}";
|
||||||
return long.TryParse(string.Concat(identParam.Value), out var trylng) ? trylng : 0;
|
var dbParms = _params.Concat(new[] { identParam }).ToArray();
|
||||||
|
await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
long.TryParse(string.Concat(identParam.Value), out var trylng);
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, dbParms, 0, trylng, null));
|
||||||
|
return trylng;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal override List<T1> RawExecuteInserted() {
|
internal override List<T1> RawExecuteInserted() {
|
||||||
|
@ -24,7 +24,10 @@ namespace FreeSql.PostgreSQL.Curd {
|
|||||||
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||||
++colidx;
|
++colidx;
|
||||||
}
|
}
|
||||||
var ret = _orm.Ado.Query<T1>(_connection, _transaction, CommandType.Text, sb.ToString(), _params.ToArray());
|
sql = sb.ToString();
|
||||||
|
var dbParms = _params.ToArray();
|
||||||
|
var ret = _orm.Ado.Query<T1>(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnDeleted?.Invoke(this, new AopOnDeletedEventArgs(_table.Type, sql, dbParms, 0, ret));
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -41,7 +44,10 @@ namespace FreeSql.PostgreSQL.Curd {
|
|||||||
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||||
++colidx;
|
++colidx;
|
||||||
}
|
}
|
||||||
var ret = await _orm.Ado.QueryAsync<T1>(_connection, _transaction, CommandType.Text, sb.ToString(), _params.ToArray());
|
sql = sb.ToString();
|
||||||
|
var dbParms = _params.ToArray();
|
||||||
|
var ret = await _orm.Ado.QueryAsync<T1>(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnDeleted?.Invoke(this, new AopOnDeletedEventArgs(_table.Type, sql, dbParms, 0, ret));
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -27,9 +27,13 @@ namespace FreeSql.PostgreSQL.Curd {
|
|||||||
var identCols = _table.Columns.Where(a => a.Value.Attribute.IsIdentity == true);
|
var identCols = _table.Columns.Where(a => a.Value.Attribute.IsIdentity == true);
|
||||||
if (identCols.Any() == false) {
|
if (identCols.Any() == false) {
|
||||||
_orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params);
|
_orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, 0, 0, null));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_connection, _transaction, CommandType.Text, string.Concat(sql, " RETURNING ", _commonUtils.QuoteSqlName(identCols.First().Value.Attribute.Name)), _params)), out var trylng) ? trylng : 0;
|
sql = string.Concat(sql, " RETURNING ", _commonUtils.QuoteSqlName(identCols.First().Value.Attribute.Name));
|
||||||
|
long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_connection, _transaction, CommandType.Text, sql, _params)), out var trylng);
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, 0, trylng, null));
|
||||||
|
return trylng;
|
||||||
}
|
}
|
||||||
async internal override Task<long> RawExecuteIdentityAsync() {
|
async internal override Task<long> RawExecuteIdentityAsync() {
|
||||||
var sql = this.ToSql();
|
var sql = this.ToSql();
|
||||||
@ -38,9 +42,13 @@ namespace FreeSql.PostgreSQL.Curd {
|
|||||||
var identCols = _table.Columns.Where(a => a.Value.Attribute.IsIdentity == true);
|
var identCols = _table.Columns.Where(a => a.Value.Attribute.IsIdentity == true);
|
||||||
if (identCols.Any() == false) {
|
if (identCols.Any() == false) {
|
||||||
await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params);
|
await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, 0, 0, null));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_connection, _transaction, CommandType.Text, string.Concat(sql, " RETURNING ", _commonUtils.QuoteSqlName(identCols.First().Value.Attribute.Name)), _params)), out var trylng) ? trylng : 0;
|
sql = string.Concat(sql, " RETURNING ", _commonUtils.QuoteSqlName(identCols.First().Value.Attribute.Name));
|
||||||
|
long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_connection, _transaction, CommandType.Text, sql, _params)), out var trylng);
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, 0, trylng, null));
|
||||||
|
return trylng;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal override List<T1> RawExecuteInserted() {
|
internal override List<T1> RawExecuteInserted() {
|
||||||
@ -56,7 +64,10 @@ namespace FreeSql.PostgreSQL.Curd {
|
|||||||
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||||
++colidx;
|
++colidx;
|
||||||
}
|
}
|
||||||
return _orm.Ado.Query<T1>(_connection, _transaction, CommandType.Text, sb.ToString(), _params);
|
sql = sb.ToString();
|
||||||
|
var ret = _orm.Ado.Query<T1>(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, 0, 0, ret));
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
async internal override Task<List<T1>> RawExecuteInsertedAsync() {
|
async internal override Task<List<T1>> RawExecuteInsertedAsync() {
|
||||||
var sql = this.ToSql();
|
var sql = this.ToSql();
|
||||||
@ -71,7 +82,10 @@ namespace FreeSql.PostgreSQL.Curd {
|
|||||||
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||||
++colidx;
|
++colidx;
|
||||||
}
|
}
|
||||||
return await _orm.Ado.QueryAsync<T1>(_connection, _transaction, CommandType.Text, sb.ToString(), _params);
|
sql = sb.ToString();
|
||||||
|
var ret = await _orm.Ado.QueryAsync<T1>(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, 0, 0, ret));
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,10 @@ namespace FreeSql.PostgreSQL.Curd {
|
|||||||
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||||
++colidx;
|
++colidx;
|
||||||
}
|
}
|
||||||
var ret = _orm.Ado.Query<T1>(_connection, _transaction, CommandType.Text, sb.ToString(), _params.Concat(_paramsSource).ToArray());
|
sql = sb.ToString();
|
||||||
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
|
var ret = _orm.Ado.Query<T1>(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnUpdated?.Invoke(this, new AopOnUpdatedEventArgs(_table.Type, _source, sql, dbParms, 0, ret));
|
||||||
ValidateVersionAndThrow(ret.Count);
|
ValidateVersionAndThrow(ret.Count);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -50,7 +53,10 @@ namespace FreeSql.PostgreSQL.Curd {
|
|||||||
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
sb.Append(_commonUtils.QuoteReadColumn(col.Attribute.MapType, _commonUtils.QuoteSqlName(col.Attribute.Name))).Append(" as ").Append(_commonUtils.QuoteSqlName(col.CsName));
|
||||||
++colidx;
|
++colidx;
|
||||||
}
|
}
|
||||||
var ret = await _orm.Ado.QueryAsync<T1>(_connection, _transaction, CommandType.Text, sb.ToString(), _params.Concat(_paramsSource).ToArray());
|
sql = sb.ToString();
|
||||||
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
|
var ret = await _orm.Ado.QueryAsync<T1>(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnUpdated?.Invoke(this, new AopOnUpdatedEventArgs(_table.Type, _source, sql, dbParms, 0, ret));
|
||||||
ValidateVersionAndThrow(ret.Count);
|
ValidateVersionAndThrow(ret.Count);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -30,7 +30,10 @@ namespace FreeSql.SqlServer.Curd {
|
|||||||
sb.Insert(0, sql.Substring(0, validx));
|
sb.Insert(0, sql.Substring(0, validx));
|
||||||
sb.Append(sql.Substring(validx));
|
sb.Append(sql.Substring(validx));
|
||||||
|
|
||||||
var ret = _orm.Ado.Query<T1>(_connection, _transaction, CommandType.Text, sb.ToString(), _params.ToArray());
|
sql = sb.ToString();
|
||||||
|
var dbParms = _params.ToArray();
|
||||||
|
var ret = _orm.Ado.Query<T1>(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnDeleted?.Invoke(this, new AopOnDeletedEventArgs(_table.Type, sql, dbParms, 0, ret));
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -52,7 +55,10 @@ namespace FreeSql.SqlServer.Curd {
|
|||||||
sb.Insert(0, sql.Substring(0, validx));
|
sb.Insert(0, sql.Substring(0, validx));
|
||||||
sb.Append(sql.Substring(validx));
|
sb.Append(sql.Substring(validx));
|
||||||
|
|
||||||
var ret = await _orm.Ado.QueryAsync<T1>(_connection, _transaction, CommandType.Text, sb.ToString(), _params.ToArray());
|
sql = sb.ToString();
|
||||||
|
var dbParms = _params.ToArray();
|
||||||
|
var ret = await _orm.Ado.QueryAsync<T1>(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnDeleted?.Invoke(this, new AopOnDeletedEventArgs(_table.Type, sql, dbParms, 0, ret));
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -26,13 +26,19 @@ namespace FreeSql.SqlServer.Curd {
|
|||||||
var sql = this.ToSql();
|
var sql = this.ToSql();
|
||||||
if (string.IsNullOrEmpty(sql)) return 0;
|
if (string.IsNullOrEmpty(sql)) return 0;
|
||||||
|
|
||||||
return long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_connection, _transaction, CommandType.Text, string.Concat(sql, "; SELECT SCOPE_IDENTITY();"), _params)), out var trylng) ? trylng : 0;
|
sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();");
|
||||||
|
long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_connection, _transaction, CommandType.Text, sql, _params)), out var trylng);
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, 0, trylng, null));
|
||||||
|
return trylng;
|
||||||
}
|
}
|
||||||
async internal override Task<long> RawExecuteIdentityAsync() {
|
async internal override Task<long> RawExecuteIdentityAsync() {
|
||||||
var sql = this.ToSql();
|
var sql = this.ToSql();
|
||||||
if (string.IsNullOrEmpty(sql)) return 0;
|
if (string.IsNullOrEmpty(sql)) return 0;
|
||||||
|
|
||||||
return long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_connection, _transaction, CommandType.Text, string.Concat(sql, "; SELECT SCOPE_IDENTITY();"), _params)), out var trylng) ? trylng : 0;
|
sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();");
|
||||||
|
long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_connection, _transaction, CommandType.Text, sql, _params)), out var trylng);
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, 0, trylng, null));
|
||||||
|
return trylng;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal override List<T1> RawExecuteInserted() {
|
internal override List<T1> RawExecuteInserted() {
|
||||||
@ -53,7 +59,10 @@ namespace FreeSql.SqlServer.Curd {
|
|||||||
sb.Insert(0, sql.Substring(0, validx + 1));
|
sb.Insert(0, sql.Substring(0, validx + 1));
|
||||||
sb.Append(sql.Substring(validx + 1));
|
sb.Append(sql.Substring(validx + 1));
|
||||||
|
|
||||||
return _orm.Ado.Query<T1>(_connection, _transaction, CommandType.Text, sb.ToString(), _params);
|
sql = sb.ToString();
|
||||||
|
var ret = _orm.Ado.Query<T1>(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, 0, 0, ret));
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
async internal override Task<List<T1>> RawExecuteInsertedAsync() {
|
async internal override Task<List<T1>> RawExecuteInsertedAsync() {
|
||||||
var sql = this.ToSql();
|
var sql = this.ToSql();
|
||||||
@ -73,7 +82,10 @@ namespace FreeSql.SqlServer.Curd {
|
|||||||
sb.Insert(0, sql.Substring(0, validx + 1));
|
sb.Insert(0, sql.Substring(0, validx + 1));
|
||||||
sb.Append(sql.Substring(validx + 1));
|
sb.Append(sql.Substring(validx + 1));
|
||||||
|
|
||||||
return await _orm.Ado.QueryAsync<T1>(_connection, _transaction, CommandType.Text, sb.ToString(), _params);
|
sql = sb.ToString();
|
||||||
|
var ret = await _orm.Ado.QueryAsync<T1>(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, 0, 0, ret));
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -39,7 +39,10 @@ namespace FreeSql.SqlServer.Curd {
|
|||||||
sb.Insert(0, sql.Substring(0, validx));
|
sb.Insert(0, sql.Substring(0, validx));
|
||||||
sb.Append(sql.Substring(validx));
|
sb.Append(sql.Substring(validx));
|
||||||
|
|
||||||
var ret = _orm.Ado.Query<T1>(_connection, _transaction, CommandType.Text, sb.ToString(), _params.Concat(_paramsSource).ToArray());
|
sql = sb.ToString();
|
||||||
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
|
var ret = _orm.Ado.Query<T1>(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnUpdated?.Invoke(this, new AopOnUpdatedEventArgs(_table.Type, _source, sql, dbParms, 0, ret));
|
||||||
ValidateVersionAndThrow(ret.Count);
|
ValidateVersionAndThrow(ret.Count);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -61,7 +64,10 @@ namespace FreeSql.SqlServer.Curd {
|
|||||||
sb.Insert(0, sql.Substring(0, validx));
|
sb.Insert(0, sql.Substring(0, validx));
|
||||||
sb.Append(sql.Substring(validx));
|
sb.Append(sql.Substring(validx));
|
||||||
|
|
||||||
var ret = await _orm.Ado.QueryAsync<T1>(_connection, _transaction, CommandType.Text, sb.ToString(), _params.Concat(_paramsSource).ToArray());
|
sql = sb.ToString();
|
||||||
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
|
var ret = await _orm.Ado.QueryAsync<T1>(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
|
_orm.Aop.OnUpdated?.Invoke(this, new AopOnUpdatedEventArgs(_table.Type, _source, sql, dbParms, 0, ret));
|
||||||
ValidateVersionAndThrow(ret.Count);
|
ValidateVersionAndThrow(ret.Count);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -25,13 +25,19 @@ namespace FreeSql.Sqlite.Curd {
|
|||||||
var sql = this.ToSql();
|
var sql = this.ToSql();
|
||||||
if (string.IsNullOrEmpty(sql)) return 0;
|
if (string.IsNullOrEmpty(sql)) return 0;
|
||||||
|
|
||||||
return long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_connection, _transaction, CommandType.Text, string.Concat(sql, "; SELECT last_insert_rowid();"), _params)), out var trylng) ? trylng : 0;
|
sql = string.Concat(sql, "; SELECT last_insert_rowid();");
|
||||||
|
long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_connection, _transaction, CommandType.Text, sql, _params)), out var trylng);
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, 0, trylng, null));
|
||||||
|
return trylng;
|
||||||
}
|
}
|
||||||
async internal override Task<long> RawExecuteIdentityAsync() {
|
async internal override Task<long> RawExecuteIdentityAsync() {
|
||||||
var sql = this.ToSql();
|
var sql = this.ToSql();
|
||||||
if (string.IsNullOrEmpty(sql)) return 0;
|
if (string.IsNullOrEmpty(sql)) return 0;
|
||||||
|
|
||||||
return long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_connection, _transaction, CommandType.Text, string.Concat(sql, "; SELECT last_insert_rowid();"), _params)), out var trylng) ? trylng : 0;
|
sql = string.Concat(sql, "; SELECT last_insert_rowid();");
|
||||||
|
long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_connection, _transaction, CommandType.Text, sql, _params)), out var trylng);
|
||||||
|
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, 0, trylng, null));
|
||||||
|
return trylng;
|
||||||
}
|
}
|
||||||
internal override List<T1> RawExecuteInserted() {
|
internal override List<T1> RawExecuteInserted() {
|
||||||
var sql = this.ToSql();
|
var sql = this.ToSql();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user