mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 10:42:52 +08:00
- 增加 OnInserted、OnUpdated、OnDeleted、OnSelected 等 AOP 方法;
This commit is contained in:
parent
e94b78199d
commit
33e992d96b
@ -2,7 +2,7 @@
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<Version>0.5.7</Version>
|
||||
<Version>0.5.8</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>
|
||||
|
@ -1882,6 +1882,26 @@
|
||||
自定义实体的属性配置,方便和多个 ORM 共同使用
|
||||
</summary>
|
||||
</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">
|
||||
<summary>
|
||||
可重新装饰的引用数据
|
||||
@ -1932,6 +1952,61 @@
|
||||
实体的属性配置
|
||||
</summary>
|
||||
</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">
|
||||
<summary>
|
||||
缓存数据时序列化方法,若无设置则默认使用 Json.net
|
||||
|
@ -2,6 +2,7 @@
|
||||
using FreeSql.DatabaseModel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq.Expressions;
|
||||
using System.Reflection;
|
||||
|
||||
@ -31,6 +32,23 @@ namespace FreeSql {
|
||||
/// 自定义实体的属性配置,方便和多个 ORM 共同使用
|
||||
/// </summary>
|
||||
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 {
|
||||
@ -107,4 +125,84 @@ namespace FreeSql {
|
||||
/// </summary>
|
||||
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<AopConfigEntityEventArgs> ConfigEntity { 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 CommonUtils _commonUtils;
|
||||
protected CommonExpression _commonExpression;
|
||||
protected List<T1> _source = new List<T1>();
|
||||
protected TableInfo _table;
|
||||
protected Func<string, string> _tableRule;
|
||||
protected StringBuilder _where = new StringBuilder();
|
||||
@ -32,7 +31,6 @@ namespace FreeSql.Internal.CommonProvider {
|
||||
}
|
||||
|
||||
protected void ClearData() {
|
||||
_source.Clear();
|
||||
_where.Clear();
|
||||
_whereTimes = 0;
|
||||
_params.Clear();
|
||||
@ -52,14 +50,18 @@ namespace FreeSql.Internal.CommonProvider {
|
||||
public int ExecuteAffrows() {
|
||||
var sql = this.ToSql();
|
||||
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();
|
||||
return affrows;
|
||||
}
|
||||
async public Task<int> ExecuteAffrowsAsync() {
|
||||
var sql = this.ToSql();
|
||||
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();
|
||||
return affrows;
|
||||
}
|
||||
|
@ -323,8 +323,18 @@ namespace FreeSql.Internal.CommonProvider {
|
||||
}
|
||||
#endregion
|
||||
|
||||
internal int RawExecuteAffrows() => _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, ToSql(), _params);
|
||||
internal Task<int> RawExecuteAffrowsAsync() => _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, ToSql(), _params);
|
||||
internal int RawExecuteAffrows() {
|
||||
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 Task<long> RawExecuteIdentityAsync();
|
||||
internal abstract List<T1> RawExecuteInserted();
|
||||
|
@ -215,15 +215,23 @@ namespace FreeSql.Internal.CommonProvider {
|
||||
var sql = this.ToSql(field);
|
||||
if (_cache.seconds > 0 && string.IsNullOrEmpty(_cache.key)) _cache.key = sql;
|
||||
|
||||
return _orm.Cache.Shell(_cache.key, _cache.seconds, () =>
|
||||
_orm.Ado.ExecuteDataTable(_connection, _transaction, CommandType.Text, sql, _params.ToArray()));
|
||||
return _orm.Cache.Shell(_cache.key, _cache.seconds, () => {
|
||||
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) {
|
||||
var sql = this.ToSql(field);
|
||||
if (_cache.seconds > 0 && string.IsNullOrEmpty(_cache.key)) _cache.key = sql;
|
||||
|
||||
return _orm.Cache.ShellAsync(_cache.key, _cache.seconds, () =>
|
||||
_orm.Ado.ExecuteDataTableAsync(_connection, _transaction, CommandType.Text, sql, _params.ToArray()));
|
||||
return _orm.Cache.ShellAsync(_cache.key, _cache.seconds, async () => {
|
||||
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) {
|
||||
@ -231,12 +239,14 @@ namespace FreeSql.Internal.CommonProvider {
|
||||
if (_cache.seconds > 0 && string.IsNullOrEmpty(_cache.key)) _cache.key = sql;
|
||||
|
||||
return _orm.Cache.Shell(_cache.key, _cache.seconds, () => {
|
||||
List<TTuple> ret = new List<TTuple>();
|
||||
Type type = typeof(TTuple);
|
||||
var ret = new List<TTuple>();
|
||||
var type = typeof(TTuple);
|
||||
var dbParms = _params.ToArray();
|
||||
_orm.Ado.ExecuteReader(_connection, _transaction, dr => {
|
||||
var read = Utils.ExecuteArrayRowReadClassOrTuple(type, null, dr, 0, _commonUtils);
|
||||
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));
|
||||
_trackToList?.Invoke(ret);
|
||||
return ret;
|
||||
@ -247,13 +257,15 @@ namespace FreeSql.Internal.CommonProvider {
|
||||
if (_cache.seconds > 0 && string.IsNullOrEmpty(_cache.key)) _cache.key = sql;
|
||||
|
||||
return _orm.Cache.ShellAsync(_cache.key, _cache.seconds, async () => {
|
||||
List<TTuple> ret = new List<TTuple>();
|
||||
Type type = typeof(TTuple);
|
||||
var ret = new List<TTuple>();
|
||||
var type = typeof(TTuple);
|
||||
var dbParms = _params.ToArray();
|
||||
await _orm.Ado.ExecuteReaderAsync(_connection, _transaction, dr => {
|
||||
var read = Utils.ExecuteArrayRowReadClassOrTuple(type, null, dr, 0, _commonUtils);
|
||||
ret.Add((TTuple) read.Value);
|
||||
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));
|
||||
_trackToList?.Invoke(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))}";
|
||||
|
||||
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 => {
|
||||
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));
|
||||
_trackToList?.Invoke(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))}";
|
||||
|
||||
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 => {
|
||||
ret.Add(af.Read(_orm, dr));
|
||||
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));
|
||||
_trackToList?.Invoke(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))}";
|
||||
|
||||
return _orm.Cache.Shell(_cache.key, _cache.seconds, () => {
|
||||
List<TReturn> ret = new List<TReturn>();
|
||||
Type type = typeof(TReturn);
|
||||
var ret = new List<TReturn>();
|
||||
var type = typeof(TReturn);
|
||||
var dbParms = _params.ToArray();
|
||||
_orm.Ado.ExecuteReader(_connection, _transaction, dr => {
|
||||
var index = -1;
|
||||
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));
|
||||
_trackToList?.Invoke(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))}";
|
||||
|
||||
return await _orm.Cache.ShellAsync(_cache.key, _cache.seconds, async () => {
|
||||
List<TReturn> ret = new List<TReturn>();
|
||||
Type type = typeof(TReturn);
|
||||
var ret = new List<TReturn>();
|
||||
var type = typeof(TReturn);
|
||||
var dbParms = _params.ToArray();
|
||||
await _orm.Ado.ExecuteReaderAsync(_connection, _transaction, dr => {
|
||||
var index = -1;
|
||||
ret.Add((TReturn) _commonExpression.ReadAnonymous(af.map, dr, ref index, false));
|
||||
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));
|
||||
_trackToList?.Invoke(ret);
|
||||
return ret;
|
||||
@ -709,8 +729,20 @@ namespace FreeSql.Internal.CommonProvider {
|
||||
return this.ToSql(af.field);
|
||||
}
|
||||
|
||||
protected DataTable InternalToDataTable(Expression select) => _orm.Ado.ExecuteDataTable(_connection, _transaction, CommandType.Text, this.InternalToSql<int>(select), _params.ToArray());
|
||||
protected Task<DataTable> InternalToDataTableAsync(Expression select) => _orm.Ado.ExecuteDataTableAsync(_connection, _transaction, CommandType.Text, this.InternalToSql<int>(select), _params.ToArray());
|
||||
protected DataTable InternalToDataTable(Expression select) {
|
||||
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) {
|
||||
var map = new ReadAnonymousTypeInfo();
|
||||
|
@ -239,14 +239,18 @@ namespace FreeSql.Internal.CommonProvider {
|
||||
internal int RawExecuteAffrows() {
|
||||
var sql = this.ToSql();
|
||||
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);
|
||||
return affrows;
|
||||
}
|
||||
async internal Task<int> RawExecuteAffrowsAsync() {
|
||||
var sql = this.ToSql();
|
||||
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);
|
||||
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));
|
||||
++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();
|
||||
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));
|
||||
++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();
|
||||
return ret;
|
||||
}
|
||||
|
@ -23,13 +23,19 @@ namespace FreeSql.MySql.Curd {
|
||||
var sql = this.ToSql();
|
||||
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() {
|
||||
var sql = this.ToSql();
|
||||
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() {
|
||||
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));
|
||||
++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() {
|
||||
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));
|
||||
++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));
|
||||
++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);
|
||||
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));
|
||||
++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);
|
||||
return ret;
|
||||
}
|
||||
|
@ -86,13 +86,18 @@ namespace FreeSql.Oracle.Curd {
|
||||
|
||||
if (_identCol == null || _source.Count > 1) {
|
||||
_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;
|
||||
}
|
||||
var identColName = _commonUtils.QuoteSqlName(_identCol.Attribute.Name);
|
||||
var identParam = _commonUtils.AppendParamter(null, $"{_identCol.CsName}99", _identCol.Attribute.MapType, 0) as OracleParameter;
|
||||
identParam.Direction = ParameterDirection.Output;
|
||||
_orm.Ado.ExecuteNonQuery(_connection, _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;
|
||||
sql = $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}";
|
||||
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() {
|
||||
var sql = this.ToSql();
|
||||
@ -100,13 +105,18 @@ namespace FreeSql.Oracle.Curd {
|
||||
|
||||
if (_identCol == null || _source.Count > 1) {
|
||||
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;
|
||||
}
|
||||
var identColName = _commonUtils.QuoteSqlName(_identCol.Attribute.Name);
|
||||
var identParam = _commonUtils.AppendParamter(null, $"{_identCol.CsName}99", _identCol.Attribute.MapType, 0) as OracleParameter;
|
||||
identParam.Direction = ParameterDirection.Output;
|
||||
await _orm.Ado.ExecuteNonQueryAsync(_connection, _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;
|
||||
sql = $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}";
|
||||
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() {
|
||||
|
@ -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));
|
||||
++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();
|
||||
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));
|
||||
++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();
|
||||
return ret;
|
||||
}
|
||||
|
@ -27,9 +27,13 @@ namespace FreeSql.PostgreSQL.Curd {
|
||||
var identCols = _table.Columns.Where(a => a.Value.Attribute.IsIdentity == true);
|
||||
if (identCols.Any() == false) {
|
||||
_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 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() {
|
||||
var sql = this.ToSql();
|
||||
@ -38,9 +42,13 @@ namespace FreeSql.PostgreSQL.Curd {
|
||||
var identCols = _table.Columns.Where(a => a.Value.Attribute.IsIdentity == true);
|
||||
if (identCols.Any() == false) {
|
||||
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 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() {
|
||||
@ -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));
|
||||
++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() {
|
||||
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));
|
||||
++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));
|
||||
++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);
|
||||
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));
|
||||
++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);
|
||||
return ret;
|
||||
}
|
||||
|
@ -30,7 +30,10 @@ namespace FreeSql.SqlServer.Curd {
|
||||
sb.Insert(0, sql.Substring(0, 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();
|
||||
return ret;
|
||||
}
|
||||
@ -52,7 +55,10 @@ namespace FreeSql.SqlServer.Curd {
|
||||
sb.Insert(0, sql.Substring(0, 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();
|
||||
return ret;
|
||||
}
|
||||
|
@ -26,13 +26,19 @@ namespace FreeSql.SqlServer.Curd {
|
||||
var sql = this.ToSql();
|
||||
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() {
|
||||
var sql = this.ToSql();
|
||||
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() {
|
||||
@ -53,7 +59,10 @@ namespace FreeSql.SqlServer.Curd {
|
||||
sb.Insert(0, sql.Substring(0, 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() {
|
||||
var sql = this.ToSql();
|
||||
@ -73,7 +82,10 @@ namespace FreeSql.SqlServer.Curd {
|
||||
sb.Insert(0, sql.Substring(0, 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.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);
|
||||
return ret;
|
||||
}
|
||||
@ -61,7 +64,10 @@ namespace FreeSql.SqlServer.Curd {
|
||||
sb.Insert(0, sql.Substring(0, 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);
|
||||
return ret;
|
||||
}
|
||||
|
@ -25,13 +25,19 @@ namespace FreeSql.Sqlite.Curd {
|
||||
var sql = this.ToSql();
|
||||
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() {
|
||||
var sql = this.ToSql();
|
||||
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() {
|
||||
var sql = this.ToSql();
|
||||
|
Loading…
x
Reference in New Issue
Block a user