mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 02:32:50 +08:00
- 调整 Aop 改为 event 事件;
- 调整 Ado.AopCommandExecuting/AopCommandExecuted 到 Aop.CommandBefore/After; - 增加 Aop.TraceBefore/After 事件;
This commit is contained in:
parent
32703e016a
commit
24cc8bc1da
@ -31,20 +31,20 @@ namespace dbcontext_01
|
|||||||
(cmd, log) => Trace.WriteLine(log)
|
(cmd, log) => Trace.WriteLine(log)
|
||||||
)
|
)
|
||||||
.Build();
|
.Build();
|
||||||
Fsql.Aop.SyncStructureBefore = (s, e) =>
|
Fsql.Aop.SyncStructureBefore += (s, e) =>
|
||||||
{
|
{
|
||||||
Console.WriteLine(e.Identifier + ": " + string.Join(", ", e.EntityTypes.Select(a => a.FullName)));
|
Console.WriteLine(e.Identifier + ": " + string.Join(", ", e.EntityTypes.Select(a => a.FullName)));
|
||||||
};
|
};
|
||||||
Fsql.Aop.SyncStructureAfter = (s, e) =>
|
Fsql.Aop.SyncStructureAfter += (s, e) =>
|
||||||
{
|
{
|
||||||
Console.WriteLine(e.Identifier + ": " + string.Join(", ", e.EntityTypes.Select(a => a.FullName)) + " " + e.ElapsedMilliseconds + "ms\r\n" + e.Exception?.Message + e.Sql);
|
Console.WriteLine(e.Identifier + ": " + string.Join(", ", e.EntityTypes.Select(a => a.FullName)) + " " + e.ElapsedMilliseconds + "ms\r\n" + e.Exception?.Message + e.Sql);
|
||||||
};
|
};
|
||||||
|
|
||||||
Fsql.Aop.CurdBefore = (s, e) =>
|
Fsql.Aop.CurdBefore += (s, e) =>
|
||||||
{
|
{
|
||||||
Console.WriteLine(e.Identifier + ": " + e.EntityType.FullName + ", " + e.Sql);
|
Console.WriteLine(e.Identifier + ": " + e.EntityType.FullName + ", " + e.Sql);
|
||||||
};
|
};
|
||||||
Fsql.Aop.CurdAfter = (s, e) =>
|
Fsql.Aop.CurdAfter += (s, e) =>
|
||||||
{
|
{
|
||||||
Console.WriteLine(e.Identifier + ": " + e.EntityType.FullName + " " + e.ElapsedMilliseconds + "ms, " + e.Sql);
|
Console.WriteLine(e.Identifier + ": " + e.EntityType.FullName + " " + e.ElapsedMilliseconds + "ms, " + e.Sql);
|
||||||
};
|
};
|
||||||
|
@ -18,7 +18,7 @@ namespace restful
|
|||||||
.UseAutoSyncStructure(true)
|
.UseAutoSyncStructure(true)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
Fsql.Aop.CurdAfter = (s, e) =>
|
Fsql.Aop.CurdAfter += (s, e) =>
|
||||||
{
|
{
|
||||||
if (e.ElapsedMilliseconds > 200)
|
if (e.ElapsedMilliseconds > 200)
|
||||||
{
|
{
|
||||||
|
@ -16,9 +16,6 @@
|
|||||||
<Title>$(AssemblyName)</Title>
|
<Title>$(AssemblyName)</Title>
|
||||||
<IsPackable>true</IsPackable>
|
<IsPackable>true</IsPackable>
|
||||||
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
|
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
|
||||||
<SignAssembly>true</SignAssembly>
|
|
||||||
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
|
|
||||||
<DelaySign>false</DelaySign>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -160,7 +160,9 @@ namespace FreeSql
|
|||||||
await DbContextExecCommandAsync();
|
await DbContextExecCommandAsync();
|
||||||
//删除没有保存的数据
|
//删除没有保存的数据
|
||||||
var propValEach = GetItemValue(item, prop) as IEnumerable;
|
var propValEach = GetItemValue(item, prop) as IEnumerable;
|
||||||
await _db.Orm.Delete<object>().AsType(tref.RefEntityType).WhereDynamic(propValEach, true).ExecuteAffrowsAsync();
|
await _db.Orm.Delete<object>().AsType(tref.RefEntityType)
|
||||||
|
.WithTransaction(_uow?.GetOrBeginTransaction())
|
||||||
|
.WhereDynamic(propValEach, true).ExecuteAffrowsAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
@ -213,7 +215,8 @@ namespace FreeSql
|
|||||||
|
|
||||||
if (curList.Any() == false) //全部删除
|
if (curList.Any() == false) //全部删除
|
||||||
{
|
{
|
||||||
var delall = _db.Orm.Delete<object>().AsType(tref.RefMiddleEntityType);
|
var delall = _db.Orm.Delete<object>().AsType(tref.RefMiddleEntityType)
|
||||||
|
.WithTransaction(_uow?.GetOrBeginTransaction());
|
||||||
foreach (var midWhere in midWheres) delall.Where(midWhere);
|
foreach (var midWhere in midWheres) delall.Where(midWhere);
|
||||||
var sql = delall.ToSql();
|
var sql = delall.ToSql();
|
||||||
await delall.ExecuteAffrowsAsync();
|
await delall.ExecuteAffrowsAsync();
|
||||||
|
@ -172,7 +172,9 @@ namespace FreeSql
|
|||||||
DbContextExecCommand();
|
DbContextExecCommand();
|
||||||
//删除没有保存的数据
|
//删除没有保存的数据
|
||||||
var propValEach = GetItemValue(item, prop) as IEnumerable;
|
var propValEach = GetItemValue(item, prop) as IEnumerable;
|
||||||
_db.Orm.Delete<object>().AsType(tref.RefEntityType).WhereDynamic(propValEach, true).ExecuteAffrows();
|
_db.Orm.Delete<object>().AsType(tref.RefEntityType)
|
||||||
|
.WithTransaction(_uow?.GetOrBeginTransaction())
|
||||||
|
.WhereDynamic(propValEach, true).ExecuteAffrows();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
@ -225,7 +227,8 @@ namespace FreeSql
|
|||||||
|
|
||||||
if (curList.Any() == false) //全部删除
|
if (curList.Any() == false) //全部删除
|
||||||
{
|
{
|
||||||
var delall = _db.Orm.Delete<object>().AsType(tref.RefMiddleEntityType);
|
var delall = _db.Orm.Delete<object>().AsType(tref.RefMiddleEntityType)
|
||||||
|
.WithTransaction(_uow?.GetOrBeginTransaction());
|
||||||
foreach (var midWhere in midWheres) delall.Where(midWhere);
|
foreach (var midWhere in midWheres) delall.Where(midWhere);
|
||||||
var sql = delall.ToSql();
|
var sql = delall.ToSql();
|
||||||
delall.ExecuteAffrows();
|
delall.ExecuteAffrows();
|
||||||
|
@ -110,13 +110,6 @@
|
|||||||
清空状态数据
|
清空状态数据
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:FreeSql.DbSet`1.RemoveAsync(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})">
|
|
||||||
<summary>
|
|
||||||
根据 lambda 条件删除数据
|
|
||||||
</summary>
|
|
||||||
<param name="predicate"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:FreeSql.DbSet`1.Add(`0)">
|
<member name="M:FreeSql.DbSet`1.Add(`0)">
|
||||||
<summary>
|
<summary>
|
||||||
添加
|
添加
|
||||||
@ -251,6 +244,13 @@
|
|||||||
<param name="entity">实体对象</param>
|
<param name="entity">实体对象</param>
|
||||||
<param name="propertyName">属性名</param>
|
<param name="propertyName">属性名</param>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:FreeSql.IUnitOfWork.GetOrBeginTransaction(System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
开启事务,或者返回已开启的事务
|
||||||
|
</summary>
|
||||||
|
<param name="isCreate">若未开启事务,则开启</param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="P:FreeSql.IUnitOfWork.Enable">
|
<member name="P:FreeSql.IUnitOfWork.Enable">
|
||||||
<summary>
|
<summary>
|
||||||
是否启用工作单元
|
是否启用工作单元
|
||||||
|
@ -8,6 +8,11 @@ namespace FreeSql
|
|||||||
public interface IUnitOfWork : IDisposable
|
public interface IUnitOfWork : IDisposable
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 开启事务,或者返回已开启的事务
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="isCreate">若未开启事务,则开启</param>
|
||||||
|
/// <returns></returns>
|
||||||
DbTransaction GetOrBeginTransaction(bool isCreate = true);
|
DbTransaction GetOrBeginTransaction(bool isCreate = true);
|
||||||
|
|
||||||
IsolationLevel? IsolationLevel { get; set; }
|
IsolationLevel? IsolationLevel { get; set; }
|
||||||
|
@ -24,6 +24,8 @@ namespace FreeSql
|
|||||||
protected IFreeSql _fsql;
|
protected IFreeSql _fsql;
|
||||||
protected Object<DbConnection> _conn;
|
protected Object<DbConnection> _conn;
|
||||||
protected DbTransaction _tran;
|
protected DbTransaction _tran;
|
||||||
|
protected Aop.TraceBeforeEventArgs _tranBefore;
|
||||||
|
protected Aop.TraceBeforeEventArgs _uowBefore;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 开启事务后有值,是 UnitOfWork 的唯一标识<para></para>
|
/// 开启事务后有值,是 UnitOfWork 的唯一标识<para></para>
|
||||||
@ -35,6 +37,11 @@ namespace FreeSql
|
|||||||
public UnitOfWork(IFreeSql fsql)
|
public UnitOfWork(IFreeSql fsql)
|
||||||
{
|
{
|
||||||
_fsql = fsql;
|
_fsql = fsql;
|
||||||
|
if (_fsql == null) throw new ArgumentNullException(nameof(fsql));
|
||||||
|
|
||||||
|
_uowBefore = new Aop.TraceBeforeEventArgs("UnitOfWork", null);
|
||||||
|
_fsql?.Aop.TraceBeforeHandler?.Invoke(this, _uowBefore);
|
||||||
|
|
||||||
#if netcoreapp
|
#if netcoreapp
|
||||||
Current.Value = this;
|
Current.Value = this;
|
||||||
#endif
|
#endif
|
||||||
@ -77,49 +84,83 @@ namespace FreeSql
|
|||||||
if (!Enable) return null;
|
if (!Enable) return null;
|
||||||
if (_conn != null) _fsql.Ado.MasterPool.Return(_conn);
|
if (_conn != null) _fsql.Ado.MasterPool.Return(_conn);
|
||||||
|
|
||||||
_conn = _fsql.Ado.MasterPool.Get();
|
_tranBefore = new Aop.TraceBeforeEventArgs("BeginTransaction", IsolationLevel);
|
||||||
|
_fsql?.Aop.TraceBeforeHandler?.Invoke(this, _tranBefore);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_tran = IsolationLevel == null ?
|
_conn = _fsql.Ado.MasterPool.Get();
|
||||||
_conn.Value.BeginTransaction() :
|
try
|
||||||
_conn.Value.BeginTransaction(IsolationLevel.Value);
|
{
|
||||||
|
_tran = IsolationLevel == null ?
|
||||||
|
_conn.Value.BeginTransaction() :
|
||||||
|
_conn.Value.BeginTransaction(IsolationLevel.Value);
|
||||||
|
|
||||||
this.Id = $"{DateTime.Now.ToString("yyyyMMdd_HHmmss")}_{Interlocked.Increment(ref _seed)}";
|
this.Id = $"{DateTime.Now.ToString("yyyyMMdd_HHmmss")}_{Interlocked.Increment(ref _seed)}";
|
||||||
DebugBeingUsed.TryAdd(this.Id, this);
|
DebugBeingUsed.TryAdd(this.Id, this);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
ReturnObject();
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
ReturnObject();
|
_fsql?.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(_tranBefore, "失败", ex));
|
||||||
throw;
|
throw ex;
|
||||||
}
|
}
|
||||||
return _tran;
|
return _tran;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Commit()
|
public void Commit()
|
||||||
{
|
{
|
||||||
|
var isCommited = false;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (_tran != null)
|
if (_tran != null)
|
||||||
{
|
{
|
||||||
_tran.Commit();
|
_tran.Commit();
|
||||||
|
isCommited = true;
|
||||||
|
_fsql?.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(_tranBefore, "提交", null));
|
||||||
|
|
||||||
if (EntityChangeReport != null && EntityChangeReport.OnChange != null && EntityChangeReport.Report.Any() == true)
|
if (EntityChangeReport != null && EntityChangeReport.OnChange != null && EntityChangeReport.Report.Any() == true)
|
||||||
EntityChangeReport.OnChange.Invoke(EntityChangeReport.Report);
|
EntityChangeReport.OnChange.Invoke(EntityChangeReport.Report);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
if (isCommited == false)
|
||||||
|
_fsql?.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(_tranBefore, "提交失败", ex));
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
ReturnObject();
|
ReturnObject();
|
||||||
|
_tranBefore = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void Rollback()
|
public void Rollback()
|
||||||
{
|
{
|
||||||
|
var isRollbacked = false;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (_tran != null) _tran.Rollback();
|
if (_tran != null)
|
||||||
|
{
|
||||||
|
_tran.Rollback();
|
||||||
|
isRollbacked = true;
|
||||||
|
_fsql?.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(_tranBefore, "回滚", null));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
if (isRollbacked == false)
|
||||||
|
_fsql?.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(_tranBefore, "回滚失败", ex));
|
||||||
|
throw ex;
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
ReturnObject();
|
ReturnObject();
|
||||||
|
_tranBefore = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,6 +178,7 @@ namespace FreeSql
|
|||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
_fsql?.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(_uowBefore, "释放", null));
|
||||||
GC.SuppressFinalize(this);
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -485,7 +485,7 @@ WHERE ROWNUM < 11";
|
|||||||
// .ExecuteAffrows();
|
// .ExecuteAffrows();
|
||||||
|
|
||||||
|
|
||||||
g.mysql.Aop.ParseExpression = (s, e) =>
|
g.mysql.Aop.ParseExpression += (s, e) =>
|
||||||
{
|
{
|
||||||
if (e.Expression.NodeType == ExpressionType.Call)
|
if (e.Expression.NodeType == ExpressionType.Call)
|
||||||
{
|
{
|
||||||
|
@ -37,7 +37,7 @@ namespace FreeSql.Tests.DataAnnotations
|
|||||||
{
|
{
|
||||||
g.mysql.CodeFirst.ConfigEntity<ModelAopConfigEntity>(a => a.Property(b => b.pkid).IsPrimary(true));
|
g.mysql.CodeFirst.ConfigEntity<ModelAopConfigEntity>(a => a.Property(b => b.pkid).IsPrimary(true));
|
||||||
|
|
||||||
g.mysql.Aop.ConfigEntity = (s, e) =>
|
g.mysql.Aop.ConfigEntity += (s, e) =>
|
||||||
{
|
{
|
||||||
var attr = e.EntityType.GetCustomAttributes(typeof(System.ComponentModel.DataAnnotations.Schema.TableAttribute), false).FirstOrDefault() as System.ComponentModel.DataAnnotations.Schema.TableAttribute;
|
var attr = e.EntityType.GetCustomAttributes(typeof(System.ComponentModel.DataAnnotations.Schema.TableAttribute), false).FirstOrDefault() as System.ComponentModel.DataAnnotations.Schema.TableAttribute;
|
||||||
if (attr != null)
|
if (attr != null)
|
||||||
@ -45,7 +45,7 @@ namespace FreeSql.Tests.DataAnnotations
|
|||||||
e.ModifyResult.Name = attr.Name;
|
e.ModifyResult.Name = attr.Name;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
g.mysql.Aop.ConfigEntityProperty = (s, e) =>
|
g.mysql.Aop.ConfigEntityProperty += (s, e) =>
|
||||||
{
|
{
|
||||||
if (e.Property.GetCustomAttributes(typeof(System.ComponentModel.DataAnnotations.KeyAttribute), false).Any())
|
if (e.Property.GetCustomAttributes(typeof(System.ComponentModel.DataAnnotations.KeyAttribute), false).Any())
|
||||||
{
|
{
|
||||||
|
@ -756,7 +756,7 @@ namespace FreeSql.Tests
|
|||||||
// .ExecuteAffrows();
|
// .ExecuteAffrows();
|
||||||
|
|
||||||
|
|
||||||
g.mysql.Aop.ParseExpression = (s, e) =>
|
g.mysql.Aop.ParseExpression += (s, e) =>
|
||||||
{
|
{
|
||||||
if (e.Expression.NodeType == ExpressionType.Call)
|
if (e.Expression.NodeType == ExpressionType.Call)
|
||||||
{
|
{
|
||||||
|
@ -459,7 +459,7 @@ namespace FreeSql.Tests
|
|||||||
a.SubjectId
|
a.SubjectId
|
||||||
}).NoneParameter().ToSql();
|
}).NoneParameter().ToSql();
|
||||||
|
|
||||||
g.mysql.Aop.ParseExpression = (s, e) =>
|
g.mysql.Aop.ParseExpression += (s, e) =>
|
||||||
{
|
{
|
||||||
if (e.Expression.NodeType == ExpressionType.Call)
|
if (e.Expression.NodeType == ExpressionType.Call)
|
||||||
{
|
{
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
<PackageReference Include="SafeObjectPool" Version="2.3.1" />
|
<PackageReference Include="SafeObjectPool" Version="2.3.1" />
|
||||||
<PackageReference Include="System.ValueTuple" Version="4.5.0" />
|
<PackageReference Include="System.ValueTuple" Version="4.5.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(TargetFramework)' == 'net40'">
|
<PropertyGroup Condition="'$(TargetFramework)' == 'net40'">
|
||||||
<DefineConstants>net40</DefineConstants>
|
<DefineConstants>net40</DefineConstants>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
@ -2098,16 +2098,6 @@
|
|||||||
从库连接池
|
从库连接池
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:FreeSql.IAdo.AopCommandExecuting">
|
|
||||||
<summary>
|
|
||||||
监视数据库命令对象(执行前,调试)
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:FreeSql.IAdo.AopCommandExecuted">
|
|
||||||
<summary>
|
|
||||||
监视数据库命令对象(执行后,用于监视执行性能)
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:FreeSql.IAdo.DataType">
|
<member name="P:FreeSql.IAdo.DataType">
|
||||||
<summary>
|
<summary>
|
||||||
数据库类型
|
数据库类型
|
||||||
@ -2401,46 +2391,66 @@
|
|||||||
<param name="parms"></param>
|
<param name="parms"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:FreeSql.IAop.ParseExpression">
|
<member name="E:FreeSql.IAop.ParseExpression">
|
||||||
<summary>
|
<summary>
|
||||||
可自定义解析表达式
|
可自定义解析表达式
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:FreeSql.IAop.ConfigEntity">
|
<member name="E:FreeSql.IAop.ConfigEntity">
|
||||||
<summary>
|
<summary>
|
||||||
自定义实体的配置,方便和多个 ORM 共同使用
|
自定义实体的配置,方便和多个 ORM 共同使用
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:FreeSql.IAop.ConfigEntityProperty">
|
<member name="E:FreeSql.IAop.ConfigEntityProperty">
|
||||||
<summary>
|
<summary>
|
||||||
自定义实体的属性配置,方便和多个 ORM 共同使用
|
自定义实体的属性配置,方便和多个 ORM 共同使用
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:FreeSql.IAop.CurdBefore">
|
<member name="E:FreeSql.IAop.CurdBefore">
|
||||||
<summary>
|
<summary>
|
||||||
增删查改,执行命令之前触发
|
增删查改,执行命令之前触发
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:FreeSql.IAop.CurdAfter">
|
<member name="E:FreeSql.IAop.CurdAfter">
|
||||||
<summary>
|
<summary>
|
||||||
增删查改,执行命令完成后触发
|
增删查改,执行命令完成后触发
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:FreeSql.IAop.SyncStructureBefore">
|
<member name="E:FreeSql.IAop.SyncStructureBefore">
|
||||||
<summary>
|
<summary>
|
||||||
CodeFirst迁移,执行之前触发
|
CodeFirst迁移,执行之前触发
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:FreeSql.IAop.SyncStructureAfter">
|
<member name="E:FreeSql.IAop.SyncStructureAfter">
|
||||||
<summary>
|
<summary>
|
||||||
CodeFirst迁移,执行完成触发
|
CodeFirst迁移,执行完成触发
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:FreeSql.IAop.AuditValue">
|
<member name="E:FreeSql.IAop.AuditValue">
|
||||||
<summary>
|
<summary>
|
||||||
Insert/Update自动值处理
|
Insert/Update自动值处理
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="E:FreeSql.IAop.CommandBefore">
|
||||||
|
<summary>
|
||||||
|
监视数据库命令对象(执行前,调试)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:FreeSql.IAop.CommandAfter">
|
||||||
|
<summary>
|
||||||
|
监视数据库命令对象(执行后,用于监视执行性能)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:FreeSql.IAop.TraceBefore">
|
||||||
|
<summary>
|
||||||
|
跟踪开始
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:FreeSql.IAop.TraceAfter">
|
||||||
|
<summary>
|
||||||
|
跟踪结束
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:FreeSql.Aop.ParseExpressionEventArgs.FreeParse">
|
<member name="P:FreeSql.Aop.ParseExpressionEventArgs.FreeParse">
|
||||||
<summary>
|
<summary>
|
||||||
内置解析功能,可辅助您进行解析
|
内置解析功能,可辅助您进行解析
|
||||||
@ -2586,6 +2596,56 @@
|
|||||||
获取实体的属性值,也可以设置实体的属性新值
|
获取实体的属性值,也可以设置实体的属性新值
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:FreeSql.Aop.CommandBeforeEventArgs.Identifier">
|
||||||
|
<summary>
|
||||||
|
标识符,可将 CommandBefore 与 CommandAfter 进行匹配
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Aop.CommandAfterEventArgs.Exception">
|
||||||
|
<summary>
|
||||||
|
发生的错误
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Aop.CommandAfterEventArgs.Log">
|
||||||
|
<summary>
|
||||||
|
执行SQL命令,返回的结果
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Aop.CommandAfterEventArgs.ElapsedTicks">
|
||||||
|
<summary>
|
||||||
|
耗时(单位:Ticks)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Aop.CommandAfterEventArgs.ElapsedMilliseconds">
|
||||||
|
<summary>
|
||||||
|
耗时(单位:毫秒)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Aop.TraceBeforeEventArgs.Identifier">
|
||||||
|
<summary>
|
||||||
|
标识符,可将 TraceBeforeEventArgs 与 TraceAfterEventArgs 进行匹配
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Aop.TraceAfterEventArgs.Remark">
|
||||||
|
<summary>
|
||||||
|
备注
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Aop.TraceAfterEventArgs.Exception">
|
||||||
|
<summary>
|
||||||
|
发生的错误
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Aop.TraceAfterEventArgs.ElapsedTicks">
|
||||||
|
<summary>
|
||||||
|
耗时(单位:Ticks)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Aop.TraceAfterEventArgs.ElapsedMilliseconds">
|
||||||
|
<summary>
|
||||||
|
耗时(单位:毫秒)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:FreeSql.ICodeFirst.IsAutoSyncStructure">
|
<member name="P:FreeSql.ICodeFirst.IsAutoSyncStructure">
|
||||||
<summary>
|
<summary>
|
||||||
【开发环境必备】自动同步实体结构到数据库,程序运行中检查实体表是否存在,然后创建或修改
|
【开发环境必备】自动同步实体结构到数据库,程序运行中检查实体表是否存在,然后创建或修改
|
||||||
|
@ -248,9 +248,15 @@ namespace FreeSql
|
|||||||
ret.CodeFirst.IsNoneCommandParameter = _isNoneCommandParameter;
|
ret.CodeFirst.IsNoneCommandParameter = _isNoneCommandParameter;
|
||||||
ret.CodeFirst.IsGenerateCommandParameterWithLambda = _isGenerateCommandParameterWithLambda;
|
ret.CodeFirst.IsGenerateCommandParameterWithLambda = _isGenerateCommandParameterWithLambda;
|
||||||
ret.CodeFirst.IsLazyLoading = _isLazyLoading;
|
ret.CodeFirst.IsLazyLoading = _isLazyLoading;
|
||||||
var ado = ret.Ado as Internal.CommonProvider.AdoProvider;
|
|
||||||
ado.AopCommandExecuting += _aopCommandExecuting;
|
ret.Aop.CommandBefore += new EventHandler<Aop.CommandBeforeEventArgs>((s, e) =>
|
||||||
ado.AopCommandExecuted += _aopCommandExecuted;
|
{
|
||||||
|
_aopCommandExecuting(e.Command);
|
||||||
|
});
|
||||||
|
ret.Aop.CommandAfter += new EventHandler<Aop.CommandAfterEventArgs>((s, e) =>
|
||||||
|
{
|
||||||
|
_aopCommandExecuted(e.Command, e.Log);
|
||||||
|
});
|
||||||
|
|
||||||
//添加实体属性名全局AOP转换处理
|
//添加实体属性名全局AOP转换处理
|
||||||
if (_entityPropertyConvertType != StringConvertType.None)
|
if (_entityPropertyConvertType != StringConvertType.None)
|
||||||
|
@ -20,14 +20,6 @@ namespace FreeSql
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
List<IObjectPool<DbConnection>> SlavePools { get; }
|
List<IObjectPool<DbConnection>> SlavePools { get; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 监视数据库命令对象(执行前,调试)
|
|
||||||
/// </summary>
|
|
||||||
Action<DbCommand> AopCommandExecuting { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// 监视数据库命令对象(执行后,用于监视执行性能)
|
|
||||||
/// </summary>
|
|
||||||
Action<DbCommand, string> AopCommandExecuted { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// 数据库类型
|
/// 数据库类型
|
||||||
/// </summary>
|
/// </summary>
|
||||||
DataType DataType { get; }
|
DataType DataType { get; }
|
||||||
|
@ -15,44 +15,75 @@ namespace FreeSql
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 可自定义解析表达式
|
/// 可自定义解析表达式
|
||||||
/// </summary>
|
/// </summary>
|
||||||
EventHandler<Aop.ParseExpressionEventArgs> ParseExpression { get; set; }
|
event EventHandler<Aop.ParseExpressionEventArgs> ParseExpression;
|
||||||
|
EventHandler<Aop.ParseExpressionEventArgs> ParseExpressionHandler { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 自定义实体的配置,方便和多个 ORM 共同使用
|
/// 自定义实体的配置,方便和多个 ORM 共同使用
|
||||||
/// </summary>
|
/// </summary>
|
||||||
EventHandler<Aop.ConfigEntityEventArgs> ConfigEntity { get; set; }
|
event EventHandler<Aop.ConfigEntityEventArgs> ConfigEntity;
|
||||||
|
EventHandler<Aop.ConfigEntityEventArgs> ConfigEntityHandler { get; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 自定义实体的属性配置,方便和多个 ORM 共同使用
|
/// 自定义实体的属性配置,方便和多个 ORM 共同使用
|
||||||
/// </summary>
|
/// </summary>
|
||||||
EventHandler<Aop.ConfigEntityPropertyEventArgs> ConfigEntityProperty { get; set; }
|
event EventHandler<Aop.ConfigEntityPropertyEventArgs> ConfigEntityProperty;
|
||||||
|
EventHandler<Aop.ConfigEntityPropertyEventArgs> ConfigEntityPropertyHandler { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 增删查改,执行命令之前触发
|
/// 增删查改,执行命令之前触发
|
||||||
/// </summary>
|
/// </summary>
|
||||||
EventHandler<Aop.CurdBeforeEventArgs> CurdBefore { get; set; }
|
event EventHandler<Aop.CurdBeforeEventArgs> CurdBefore;
|
||||||
|
EventHandler<Aop.CurdBeforeEventArgs> CurdBeforeHandler { get; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 增删查改,执行命令完成后触发
|
/// 增删查改,执行命令完成后触发
|
||||||
/// </summary>
|
/// </summary>
|
||||||
EventHandler<Aop.CurdAfterEventArgs> CurdAfter { get; set; }
|
event EventHandler<Aop.CurdAfterEventArgs> CurdAfter;
|
||||||
|
EventHandler<Aop.CurdAfterEventArgs> CurdAfterHandler { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// CodeFirst迁移,执行之前触发
|
/// CodeFirst迁移,执行之前触发
|
||||||
/// </summary>
|
/// </summary>
|
||||||
EventHandler<Aop.SyncStructureBeforeEventArgs> SyncStructureBefore { get; set; }
|
event EventHandler<Aop.SyncStructureBeforeEventArgs> SyncStructureBefore;
|
||||||
|
EventHandler<Aop.SyncStructureBeforeEventArgs> SyncStructureBeforeHandler { get; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// CodeFirst迁移,执行完成触发
|
/// CodeFirst迁移,执行完成触发
|
||||||
/// </summary>
|
/// </summary>
|
||||||
EventHandler<Aop.SyncStructureAfterEventArgs> SyncStructureAfter { get; set; }
|
event EventHandler<Aop.SyncStructureAfterEventArgs> SyncStructureAfter;
|
||||||
|
EventHandler<Aop.SyncStructureAfterEventArgs> SyncStructureAfterHandler { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Insert/Update自动值处理
|
/// Insert/Update自动值处理
|
||||||
/// </summary>
|
/// </summary>
|
||||||
EventHandler<Aop.AuditValueEventArgs> AuditValue { get; set; }
|
event EventHandler<Aop.AuditValueEventArgs> AuditValue;
|
||||||
|
EventHandler<Aop.AuditValueEventArgs> AuditValueHandler { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 监视数据库命令对象(执行前,调试)
|
||||||
|
/// </summary>
|
||||||
|
event EventHandler<Aop.CommandBeforeEventArgs> CommandBefore;
|
||||||
|
EventHandler<Aop.CommandBeforeEventArgs> CommandBeforeHandler { get; }
|
||||||
|
/// <summary>
|
||||||
|
/// 监视数据库命令对象(执行后,用于监视执行性能)
|
||||||
|
/// </summary>
|
||||||
|
event EventHandler<Aop.CommandAfterEventArgs> CommandAfter;
|
||||||
|
EventHandler<Aop.CommandAfterEventArgs> CommandAfterHandler { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 跟踪开始
|
||||||
|
/// </summary>
|
||||||
|
event EventHandler<Aop.TraceBeforeEventArgs> TraceBefore;
|
||||||
|
EventHandler<Aop.TraceBeforeEventArgs> TraceBeforeHandler { get; }
|
||||||
|
/// <summary>
|
||||||
|
/// 跟踪结束
|
||||||
|
/// </summary>
|
||||||
|
event EventHandler<Aop.TraceAfterEventArgs> TraceAfter;
|
||||||
|
EventHandler<Aop.TraceAfterEventArgs> TraceAfterHandler { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace FreeSql.Aop
|
namespace FreeSql.Aop
|
||||||
{
|
{
|
||||||
|
#region ParseExpression
|
||||||
public class ParseExpressionEventArgs : EventArgs
|
public class ParseExpressionEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
public ParseExpressionEventArgs(Expression expression, Func<Expression, string> freeParse)
|
public ParseExpressionEventArgs(Expression expression, Func<Expression, string> freeParse)
|
||||||
@ -75,6 +106,9 @@ namespace FreeSql.Aop
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string Result { get; set; }
|
public string Result { get; set; }
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ConfigEntity/Property
|
||||||
public class ConfigEntityEventArgs : EventArgs
|
public class ConfigEntityEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
public ConfigEntityEventArgs(Type entityType)
|
public ConfigEntityEventArgs(Type entityType)
|
||||||
@ -119,7 +153,9 @@ namespace FreeSql.Aop
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public ColumnAttribute ModifyResult { get; }
|
public ColumnAttribute ModifyResult { get; }
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region CurdBefore/After
|
||||||
public class CurdBeforeEventArgs : EventArgs
|
public class CurdBeforeEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
public CurdBeforeEventArgs(Type entityType, TableInfo table, CurdType curdType, string sql, DbParameter[] dbParms) :
|
public CurdBeforeEventArgs(Type entityType, TableInfo table, CurdType curdType, string sql, DbParameter[] dbParms) :
|
||||||
@ -155,7 +191,7 @@ namespace FreeSql.Aop
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 实体类型的元数据
|
/// 实体类型的元数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public TableInfo Table { get; set; }
|
public TableInfo Table { get; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 执行的 SQL
|
/// 执行的 SQL
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -183,7 +219,7 @@ namespace FreeSql.Aop
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 执行SQL命令,返回的结果
|
/// 执行SQL命令,返回的结果
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public object ExecuteResult { get; set; }
|
public object ExecuteResult { get; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 耗时(单位:Ticks)
|
/// 耗时(单位:Ticks)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -193,7 +229,9 @@ namespace FreeSql.Aop
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public long ElapsedMilliseconds => this.Stopwatch.ElapsedMilliseconds;
|
public long ElapsedMilliseconds => this.Stopwatch.ElapsedMilliseconds;
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region SyncStructureBefore/After
|
||||||
public class SyncStructureBeforeEventArgs : EventArgs
|
public class SyncStructureBeforeEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
public SyncStructureBeforeEventArgs(Type[] entityTypes) :
|
public SyncStructureBeforeEventArgs(Type[] entityTypes) :
|
||||||
@ -246,7 +284,9 @@ namespace FreeSql.Aop
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public long ElapsedMilliseconds => this.Stopwatch.ElapsedMilliseconds;
|
public long ElapsedMilliseconds => this.Stopwatch.ElapsedMilliseconds;
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region AuditValue
|
||||||
public class AuditValueEventArgs : EventArgs
|
public class AuditValueEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
public AuditValueEventArgs(AuditValueType autoValueType, ColumnInfo column, PropertyInfo property, object value)
|
public AuditValueEventArgs(AuditValueType autoValueType, ColumnInfo column, PropertyInfo property, object value)
|
||||||
@ -285,4 +325,111 @@ namespace FreeSql.Aop
|
|||||||
public bool IsChanged { get; private set; }
|
public bool IsChanged { get; private set; }
|
||||||
}
|
}
|
||||||
public enum AuditValueType { Update, Insert }
|
public enum AuditValueType { Update, Insert }
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region CommandBefore/After
|
||||||
|
public class CommandBeforeEventArgs : EventArgs
|
||||||
|
{
|
||||||
|
public CommandBeforeEventArgs(DbCommand command) :
|
||||||
|
this(Guid.NewGuid(), new Stopwatch(), command)
|
||||||
|
{
|
||||||
|
this.Stopwatch.Start();
|
||||||
|
}
|
||||||
|
protected CommandBeforeEventArgs(Guid identifier, Stopwatch stopwatch, DbCommand command)
|
||||||
|
{
|
||||||
|
this.Identifier = identifier;
|
||||||
|
this.Stopwatch = stopwatch;
|
||||||
|
this.Command = command;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 标识符,可将 CommandBefore 与 CommandAfter 进行匹配
|
||||||
|
/// </summary>
|
||||||
|
public Guid Identifier { get; protected set; }
|
||||||
|
protected Stopwatch Stopwatch { get; }
|
||||||
|
internal Stopwatch StopwatchInternal => Stopwatch;
|
||||||
|
public DbCommand Command { get; }
|
||||||
|
}
|
||||||
|
public class CommandAfterEventArgs : CommandBeforeEventArgs
|
||||||
|
{
|
||||||
|
public CommandAfterEventArgs(CommandBeforeEventArgs before, Exception exception, string log) :
|
||||||
|
base(before.Identifier, before.StopwatchInternal, before.Command)
|
||||||
|
{
|
||||||
|
this.Exception = exception;
|
||||||
|
this.Log = log;
|
||||||
|
this.Stopwatch.Stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 发生的错误
|
||||||
|
/// </summary>
|
||||||
|
public Exception Exception { get; }
|
||||||
|
/// <summary>
|
||||||
|
/// 执行SQL命令,返回的结果
|
||||||
|
/// </summary>
|
||||||
|
public string Log { get; }
|
||||||
|
/// <summary>
|
||||||
|
/// 耗时(单位:Ticks)
|
||||||
|
/// </summary>
|
||||||
|
public long ElapsedTicks => this.Stopwatch.ElapsedTicks;
|
||||||
|
/// <summary>
|
||||||
|
/// 耗时(单位:毫秒)
|
||||||
|
/// </summary>
|
||||||
|
public long ElapsedMilliseconds => this.Stopwatch.ElapsedMilliseconds;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region TraceBefore/After
|
||||||
|
public class TraceBeforeEventArgs : EventArgs
|
||||||
|
{
|
||||||
|
public TraceBeforeEventArgs(string operation, object value) :
|
||||||
|
this(Guid.NewGuid(), new Stopwatch(), operation, value)
|
||||||
|
{
|
||||||
|
this.Stopwatch.Start();
|
||||||
|
}
|
||||||
|
protected TraceBeforeEventArgs(Guid identifier, Stopwatch stopwatch, string operation, object value)
|
||||||
|
{
|
||||||
|
this.Identifier = identifier;
|
||||||
|
this.Stopwatch = stopwatch;
|
||||||
|
this.Operation = operation;
|
||||||
|
this.Value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 标识符,可将 TraceBeforeEventArgs 与 TraceAfterEventArgs 进行匹配
|
||||||
|
/// </summary>
|
||||||
|
public Guid Identifier { get; protected set; }
|
||||||
|
protected Stopwatch Stopwatch { get; }
|
||||||
|
internal Stopwatch StopwatchInternal => Stopwatch;
|
||||||
|
public string Operation { get; }
|
||||||
|
public object Value { get; }
|
||||||
|
}
|
||||||
|
public class TraceAfterEventArgs : TraceBeforeEventArgs
|
||||||
|
{
|
||||||
|
public TraceAfterEventArgs(TraceBeforeEventArgs before, string remark, Exception exception) :
|
||||||
|
base(before.Identifier, before.StopwatchInternal, before.Operation, before.Value)
|
||||||
|
{
|
||||||
|
this.Remark = remark;
|
||||||
|
this.Exception = exception;
|
||||||
|
this.Stopwatch.Stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 备注
|
||||||
|
/// </summary>
|
||||||
|
public string Remark { get; }
|
||||||
|
/// <summary>
|
||||||
|
/// 发生的错误
|
||||||
|
/// </summary>
|
||||||
|
public Exception Exception { get; }
|
||||||
|
/// <summary>
|
||||||
|
/// 耗时(单位:Ticks)
|
||||||
|
/// </summary>
|
||||||
|
public long ElapsedTicks => this.Stopwatch.ElapsedTicks;
|
||||||
|
/// <summary>
|
||||||
|
/// 耗时(单位:毫秒)
|
||||||
|
/// </summary>
|
||||||
|
public long ElapsedMilliseconds => this.Stopwatch.ElapsedMilliseconds;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
}
|
}
|
@ -486,7 +486,9 @@ namespace FreeSql.Internal
|
|||||||
if (isLeftMapType) oldMapType = tsc.SetMapTypeReturnOld(leftMapColumn.Attribute.MapType);
|
if (isLeftMapType) oldMapType = tsc.SetMapTypeReturnOld(leftMapColumn.Attribute.MapType);
|
||||||
|
|
||||||
var right = ExpressionLambdaToSql(rightExp, tsc);
|
var right = ExpressionLambdaToSql(rightExp, tsc);
|
||||||
if (right != "NULL" && isLeftMapType)
|
if (right != "NULL" && isLeftMapType &&
|
||||||
|
//判断参数化后的bug
|
||||||
|
!(right.Contains('@') || right.Contains('?') || right.Contains(':')))
|
||||||
{
|
{
|
||||||
var enumType = leftMapColumn.CsType.NullableTypeOrThis();
|
var enumType = leftMapColumn.CsType.NullableTypeOrThis();
|
||||||
if (enumType.IsEnum)
|
if (enumType.IsEnum)
|
||||||
@ -500,7 +502,9 @@ namespace FreeSql.Internal
|
|||||||
{
|
{
|
||||||
oldMapType = tsc.SetMapTypeReturnOld(rightMapColumn.Attribute.MapType);
|
oldMapType = tsc.SetMapTypeReturnOld(rightMapColumn.Attribute.MapType);
|
||||||
left = ExpressionLambdaToSql(leftExp, tsc);
|
left = ExpressionLambdaToSql(leftExp, tsc);
|
||||||
if (left != "NULL" && isRightMapType)
|
if (left != "NULL" && isRightMapType &&
|
||||||
|
//判断参数化后的bug
|
||||||
|
!(left.Contains('@') || left.Contains('?') || left.Contains(':')))
|
||||||
{
|
{
|
||||||
var enumType = rightMapColumn.CsType.NullableTypeOrThis();
|
var enumType = rightMapColumn.CsType.NullableTypeOrThis();
|
||||||
if (enumType.IsEnum)
|
if (enumType.IsEnum)
|
||||||
@ -560,10 +564,10 @@ namespace FreeSql.Internal
|
|||||||
{
|
{
|
||||||
if (exp == null) return "";
|
if (exp == null) return "";
|
||||||
if (tsc.dbParams != null && tsc.mapColumnTmp != null && tsc.mapColumnTmp.CsType.NullableTypeOrThis() != exp.Type) tsc.SetMapColumnTmp(null);
|
if (tsc.dbParams != null && tsc.mapColumnTmp != null && tsc.mapColumnTmp.CsType.NullableTypeOrThis() != exp.Type) tsc.SetMapColumnTmp(null);
|
||||||
if (tsc.isDisableDiyParse == false && _common._orm.Aop.ParseExpression != null)
|
if (tsc.isDisableDiyParse == false && _common._orm.Aop.ParseExpressionHandler != null)
|
||||||
{
|
{
|
||||||
var args = new Aop.ParseExpressionEventArgs(exp, ukexp => ExpressionLambdaToSql(ukexp, tsc.CloneDisableDiyParse()));
|
var args = new Aop.ParseExpressionEventArgs(exp, ukexp => ExpressionLambdaToSql(ukexp, tsc.CloneDisableDiyParse()));
|
||||||
_common._orm.Aop.ParseExpression?.Invoke(this, args);
|
_common._orm.Aop.ParseExpressionHandler?.Invoke(this, args);
|
||||||
if (string.IsNullOrEmpty(args.Result) == false) return args.Result;
|
if (string.IsNullOrEmpty(args.Result) == false) return args.Result;
|
||||||
}
|
}
|
||||||
switch (exp.NodeType)
|
switch (exp.NodeType)
|
||||||
|
@ -17,10 +17,8 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
protected abstract void ReturnConnection(IObjectPool<DbConnection> pool, Object<DbConnection> conn, Exception ex);
|
protected abstract void ReturnConnection(IObjectPool<DbConnection> pool, Object<DbConnection> conn, Exception ex);
|
||||||
protected abstract DbCommand CreateCommand();
|
protected abstract DbCommand CreateCommand();
|
||||||
protected abstract DbParameter[] GetDbParamtersByObject(string sql, object obj);
|
protected abstract DbParameter[] GetDbParamtersByObject(string sql, object obj);
|
||||||
public Action<DbCommand> AopCommandExecuting { get; set; }
|
|
||||||
public Action<DbCommand, string> AopCommandExecuted { get; set; }
|
|
||||||
|
|
||||||
protected bool IsTracePerformance => AopCommandExecuted != null;
|
protected bool IsTracePerformance => _util?._orm?.Aop.CommandAfterHandler != null;
|
||||||
|
|
||||||
public IObjectPool<DbConnection> MasterPool { get; protected set; }
|
public IObjectPool<DbConnection> MasterPool { get; protected set; }
|
||||||
public List<IObjectPool<DbConnection>> SlavePools { get; } = new List<IObjectPool<DbConnection>>();
|
public List<IObjectPool<DbConnection>> SlavePools { get; } = new List<IObjectPool<DbConnection>>();
|
||||||
@ -35,22 +33,22 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
this.DataType = dataType;
|
this.DataType = dataType;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LoggerException(IObjectPool<DbConnection> pool, (DbCommand cmd, bool isclose) pc, Exception e, DateTime dt, StringBuilder logtxt, bool isThrowException = true)
|
void LoggerException(IObjectPool<DbConnection> pool, (Aop.CommandBeforeEventArgs before, DbCommand cmd, bool isclose) pc, Exception ex, DateTime dt, StringBuilder logtxt, bool isThrowException = true)
|
||||||
{
|
{
|
||||||
var cmd = pc.cmd;
|
var cmd = pc.cmd;
|
||||||
if (pc.isclose) pc.cmd.Connection.Close();
|
if (pc.isclose) pc.cmd.Connection.Close();
|
||||||
if (IsTracePerformance)
|
if (IsTracePerformance)
|
||||||
{
|
{
|
||||||
TimeSpan ts = DateTime.Now.Subtract(dt);
|
TimeSpan ts = DateTime.Now.Subtract(dt);
|
||||||
if (e == null && ts.TotalMilliseconds > 100)
|
if (ex == null && ts.TotalMilliseconds > 100)
|
||||||
Trace.WriteLine(logtxt.Insert(0, $"{pool?.Policy.Name}(执行SQL)语句耗时过长{ts.TotalMilliseconds}ms\r\n{cmd.CommandText}\r\n").ToString());
|
Trace.WriteLine(logtxt.Insert(0, $"{pool?.Policy.Name}(执行SQL)语句耗时过长{ts.TotalMilliseconds}ms\r\n{cmd.CommandText}\r\n").ToString());
|
||||||
else
|
else
|
||||||
logtxt.Insert(0, $"{pool?.Policy.Name}(执行SQL)耗时{ts.TotalMilliseconds}ms\r\n{cmd.CommandText}\r\n").ToString();
|
logtxt.Insert(0, $"{pool?.Policy.Name}(执行SQL)耗时{ts.TotalMilliseconds}ms\r\n{cmd.CommandText}\r\n").ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e == null)
|
if (ex == null)
|
||||||
{
|
{
|
||||||
AopCommandExecuted?.Invoke(cmd, logtxt.ToString());
|
_util?._orm?.Aop.CommandAfterHandler?.Invoke(_util._orm, new Aop.CommandAfterEventArgs(pc.before, null, logtxt.ToString()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,7 +57,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
foreach (DbParameter parm in cmd.Parameters)
|
foreach (DbParameter parm in cmd.Parameters)
|
||||||
log.Append(parm.ParameterName.PadRight(20, ' ')).Append(" = ").Append((parm.Value ?? DBNull.Value) == DBNull.Value ? "NULL" : parm.Value).Append("\r\n");
|
log.Append(parm.ParameterName.PadRight(20, ' ')).Append(" = ").Append((parm.Value ?? DBNull.Value) == DBNull.Value ? "NULL" : parm.Value).Append("\r\n");
|
||||||
|
|
||||||
log.Append(e.Message);
|
log.Append(ex.Message);
|
||||||
Trace.WriteLine(log.ToString());
|
Trace.WriteLine(log.ToString());
|
||||||
|
|
||||||
if (cmd.Transaction != null)
|
if (cmd.Transaction != null)
|
||||||
@ -70,16 +68,16 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
//cmd.Transaction.Rollback();
|
//cmd.Transaction.Rollback();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
RollbackTransaction();
|
RollbackTransaction(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
AopCommandExecuted?.Invoke(cmd, log.ToString());
|
_util?._orm?.Aop.CommandAfterHandler?.Invoke(_util._orm, new Aop.CommandAfterEventArgs(pc.before, null, logtxt.ToString()));
|
||||||
|
|
||||||
cmd.Parameters.Clear();
|
cmd.Parameters.Clear();
|
||||||
if (isThrowException)
|
if (isThrowException)
|
||||||
{
|
{
|
||||||
if (DataType == DataType.Sqlite) cmd.Dispose();
|
if (DataType == DataType.Sqlite) cmd.Dispose();
|
||||||
throw e;
|
throw ex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -547,11 +545,14 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
|
|
||||||
Object<DbConnection> conn = null;
|
Object<DbConnection> conn = null;
|
||||||
var pc = PrepareCommand(connection, transaction, cmdType, cmdText, cmdParms, logtxt);
|
var pc = PrepareCommand(connection, transaction, cmdType, cmdText, cmdParms, logtxt);
|
||||||
if (IsTracePerformance) logtxt.Append("PrepareCommand: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
if (IsTracePerformance)
|
||||||
|
{
|
||||||
|
logtxt.Append("PrepareCommand: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
||||||
|
logtxt_dt = DateTime.Now;
|
||||||
|
}
|
||||||
Exception ex = null;
|
Exception ex = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (IsTracePerformance) logtxt_dt = DateTime.Now;
|
|
||||||
if (isSlave)
|
if (isSlave)
|
||||||
{
|
{
|
||||||
//从库查询切换,恢复
|
//从库查询切换,恢复
|
||||||
@ -571,7 +572,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
{
|
{
|
||||||
if (IsTracePerformance) logtxt_dt = DateTime.Now;
|
if (IsTracePerformance) logtxt_dt = DateTime.Now;
|
||||||
ReturnConnection(pool, conn, ex); //pool.Return(conn, ex);
|
ReturnConnection(pool, conn, ex); //pool.Return(conn, ex);
|
||||||
if (IsTracePerformance) logtxt.Append("ReleaseConnection: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms");
|
if (IsTracePerformance) logtxt.Append("Pool.Return: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms");
|
||||||
}
|
}
|
||||||
LoggerException(pool, pc, new Exception($"连接失败,准备切换其他可用服务器"), dt, logtxt, false);
|
LoggerException(pool, pc, new Exception($"连接失败,准备切换其他可用服务器"), dt, logtxt, false);
|
||||||
pc.cmd.Parameters.Clear();
|
pc.cmd.Parameters.Clear();
|
||||||
@ -587,43 +588,31 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
}
|
}
|
||||||
if (IsTracePerformance)
|
if (IsTracePerformance)
|
||||||
{
|
{
|
||||||
logtxt.Append("Open: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
logtxt.Append("Pool.Get: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
||||||
logtxt_dt = DateTime.Now;
|
logtxt_dt = DateTime.Now;
|
||||||
}
|
}
|
||||||
using (var dr = pc.cmd.ExecuteReader())
|
using (var dr = pc.cmd.ExecuteReader())
|
||||||
{
|
{
|
||||||
if (IsTracePerformance) logtxt.Append("ExecuteReader: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
|
||||||
int resultIndex = 0;
|
int resultIndex = 0;
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
if (IsTracePerformance) logtxt_dt = DateTime.Now;
|
|
||||||
bool isread = dr.Read();
|
bool isread = dr.Read();
|
||||||
if (IsTracePerformance) logtxt.Append(" dr.Read: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
|
||||||
if (isread == false) break;
|
if (isread == false) break;
|
||||||
|
|
||||||
if (readerHander != null)
|
if (readerHander != null)
|
||||||
{
|
|
||||||
object[] values = null;
|
|
||||||
if (IsTracePerformance)
|
|
||||||
{
|
|
||||||
logtxt_dt = DateTime.Now;
|
|
||||||
values = new object[dr.FieldCount];
|
|
||||||
dr.GetValues(values);
|
|
||||||
logtxt.Append(" dr.GetValues: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
|
||||||
logtxt_dt = DateTime.Now;
|
|
||||||
}
|
|
||||||
readerHander(dr, resultIndex);
|
readerHander(dr, resultIndex);
|
||||||
if (IsTracePerformance) logtxt.Append(" readerHander: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms (").Append(string.Join(", ", values)).Append(")\r\n");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (++resultIndex >= multipleResult || dr.NextResult() == false) break;
|
if (++resultIndex >= multipleResult || dr.NextResult() == false) break;
|
||||||
}
|
}
|
||||||
if (IsTracePerformance) logtxt_dt = DateTime.Now;
|
|
||||||
dr.Close();
|
dr.Close();
|
||||||
}
|
}
|
||||||
if (IsTracePerformance) logtxt.Append("ExecuteReader_dispose: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
if (IsTracePerformance)
|
||||||
|
{
|
||||||
|
logtxt.Append("ExecuteReader: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
||||||
|
logtxt_dt = DateTime.Now;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex2)
|
catch (Exception ex2)
|
||||||
{
|
{
|
||||||
@ -632,9 +621,12 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
|
|
||||||
if (conn != null)
|
if (conn != null)
|
||||||
{
|
{
|
||||||
if (IsTracePerformance) logtxt_dt = DateTime.Now;
|
|
||||||
ReturnConnection(pool, conn, ex); //pool.Return(conn, ex);
|
ReturnConnection(pool, conn, ex); //pool.Return(conn, ex);
|
||||||
if (IsTracePerformance) logtxt.Append("ReleaseConnection: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms");
|
if (IsTracePerformance)
|
||||||
|
{
|
||||||
|
logtxt.Append("Pool.Return: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms");
|
||||||
|
logtxt_dt = DateTime.Now;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
LoggerException(pool, pc, ex, dt, logtxt);
|
LoggerException(pool, pc, ex, dt, logtxt);
|
||||||
pc.cmd.Parameters.Clear();
|
pc.cmd.Parameters.Clear();
|
||||||
@ -735,7 +727,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
{
|
{
|
||||||
if (IsTracePerformance) logtxt_dt = DateTime.Now;
|
if (IsTracePerformance) logtxt_dt = DateTime.Now;
|
||||||
ReturnConnection(MasterPool, conn, ex); //this.MasterPool.Return(conn, ex);
|
ReturnConnection(MasterPool, conn, ex); //this.MasterPool.Return(conn, ex);
|
||||||
if (IsTracePerformance) logtxt.Append("ReleaseConnection: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms");
|
if (IsTracePerformance) logtxt.Append("Pool.Return: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms");
|
||||||
}
|
}
|
||||||
LoggerException(this.MasterPool, pc, ex, dt, logtxt);
|
LoggerException(this.MasterPool, pc, ex, dt, logtxt);
|
||||||
pc.cmd.Parameters.Clear();
|
pc.cmd.Parameters.Clear();
|
||||||
@ -771,7 +763,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
{
|
{
|
||||||
if (IsTracePerformance) logtxt_dt = DateTime.Now;
|
if (IsTracePerformance) logtxt_dt = DateTime.Now;
|
||||||
ReturnConnection(MasterPool, conn, ex); //this.MasterPool.Return(conn, ex);
|
ReturnConnection(MasterPool, conn, ex); //this.MasterPool.Return(conn, ex);
|
||||||
if (IsTracePerformance) logtxt.Append("ReleaseConnection: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms");
|
if (IsTracePerformance) logtxt.Append("Pool.Return: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms");
|
||||||
}
|
}
|
||||||
LoggerException(this.MasterPool, pc, ex, dt, logtxt);
|
LoggerException(this.MasterPool, pc, ex, dt, logtxt);
|
||||||
pc.cmd.Parameters.Clear();
|
pc.cmd.Parameters.Clear();
|
||||||
@ -779,7 +771,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
(DbCommand cmd, bool isclose) PrepareCommand(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, DbParameter[] cmdParms, StringBuilder logtxt)
|
(Aop.CommandBeforeEventArgs before, DbCommand cmd, bool isclose) PrepareCommand(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, DbParameter[] cmdParms, StringBuilder logtxt)
|
||||||
{
|
{
|
||||||
var dt = DateTime.Now;
|
var dt = DateTime.Now;
|
||||||
DbCommand cmd = CreateCommand();
|
DbCommand cmd = CreateCommand();
|
||||||
@ -800,14 +792,10 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
if (connection == null)
|
if (connection == null)
|
||||||
{
|
{
|
||||||
var tran = transaction ?? TransactionCurrentThread;
|
var tran = transaction ?? TransactionCurrentThread;
|
||||||
if (IsTracePerformance) logtxt.Append(" PrepareCommand_part1: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms cmdParms: ").Append(cmd.Parameters.Count).Append("\r\n");
|
|
||||||
|
|
||||||
if (tran != null && connection == null)
|
if (tran != null && connection == null)
|
||||||
{
|
{
|
||||||
if (IsTracePerformance) dt = DateTime.Now;
|
|
||||||
cmd.Connection = tran.Connection;
|
cmd.Connection = tran.Connection;
|
||||||
cmd.Transaction = tran;
|
cmd.Transaction = tran;
|
||||||
if (IsTracePerformance) logtxt.Append(" PrepareCommand_tran!=null: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -825,11 +813,12 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (IsTracePerformance) dt = DateTime.Now;
|
if (IsTracePerformance) dt = DateTime.Now;
|
||||||
AutoCommitTransaction();
|
CommitTimeoutTransaction();
|
||||||
if (IsTracePerformance) logtxt.Append(" AutoCommitTransaction: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
if (IsTracePerformance) logtxt.Append(" CommitTimeoutTransaction: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
||||||
|
|
||||||
AopCommandExecuting?.Invoke(cmd);
|
var before = new Aop.CommandBeforeEventArgs(cmd);
|
||||||
return (cmd, isclose);
|
_util?._orm?.Aop.CommandBeforeHandler?.Invoke(_util._orm, before);
|
||||||
|
return (before, cmd, isclose);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -476,11 +476,14 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
|
|
||||||
Object<DbConnection> conn = null;
|
Object<DbConnection> conn = null;
|
||||||
var pc = await PrepareCommandAsync(connection, transaction, cmdType, cmdText, cmdParms, logtxt);
|
var pc = await PrepareCommandAsync(connection, transaction, cmdType, cmdText, cmdParms, logtxt);
|
||||||
if (IsTracePerformance) logtxt.Append("PrepareCommandAsync: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
if (IsTracePerformance)
|
||||||
|
{
|
||||||
|
logtxt.Append("PrepareCommand: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
||||||
|
logtxt_dt = DateTime.Now;
|
||||||
|
}
|
||||||
Exception ex = null;
|
Exception ex = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (IsTracePerformance) logtxt_dt = DateTime.Now;
|
|
||||||
if (isSlave)
|
if (isSlave)
|
||||||
{
|
{
|
||||||
//从库查询切换,恢复
|
//从库查询切换,恢复
|
||||||
@ -500,7 +503,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
{
|
{
|
||||||
if (IsTracePerformance) logtxt_dt = DateTime.Now;
|
if (IsTracePerformance) logtxt_dt = DateTime.Now;
|
||||||
ReturnConnection(pool, conn, ex); //pool.Return(conn, ex);
|
ReturnConnection(pool, conn, ex); //pool.Return(conn, ex);
|
||||||
if (IsTracePerformance) logtxt.Append("ReleaseConnection: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms");
|
if (IsTracePerformance) logtxt.Append("Pool.Return: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms");
|
||||||
}
|
}
|
||||||
LoggerException(pool, pc, new Exception($"连接失败,准备切换其他可用服务器"), dt, logtxt, false);
|
LoggerException(pool, pc, new Exception($"连接失败,准备切换其他可用服务器"), dt, logtxt, false);
|
||||||
pc.cmd.Parameters.Clear();
|
pc.cmd.Parameters.Clear();
|
||||||
@ -516,43 +519,31 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
}
|
}
|
||||||
if (IsTracePerformance)
|
if (IsTracePerformance)
|
||||||
{
|
{
|
||||||
logtxt.Append("OpenAsync: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
logtxt.Append("Pool.Get: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
||||||
logtxt_dt = DateTime.Now;
|
logtxt_dt = DateTime.Now;
|
||||||
}
|
}
|
||||||
using (var dr = await pc.cmd.ExecuteReaderAsync())
|
using (var dr = await pc.cmd.ExecuteReaderAsync())
|
||||||
{
|
{
|
||||||
if (IsTracePerformance) logtxt.Append("ExecuteReaderAsync: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
|
||||||
int resultIndex = 0;
|
int resultIndex = 0;
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
if (IsTracePerformance) logtxt_dt = DateTime.Now;
|
|
||||||
bool isread = await dr.ReadAsync();
|
bool isread = await dr.ReadAsync();
|
||||||
if (IsTracePerformance) logtxt.Append(" dr.ReadAsync: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
|
||||||
if (isread == false) break;
|
if (isread == false) break;
|
||||||
|
|
||||||
if (readerHander != null)
|
if (readerHander != null)
|
||||||
{
|
|
||||||
object[] values = null;
|
|
||||||
if (IsTracePerformance)
|
|
||||||
{
|
|
||||||
logtxt_dt = DateTime.Now;
|
|
||||||
values = new object[dr.FieldCount];
|
|
||||||
for (int a = 0; a < values.Length; a++) if (!await dr.IsDBNullAsync(a)) values[a] = await dr.GetFieldValueAsync<object>(a);
|
|
||||||
logtxt.Append(" dr.GetValues: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
|
||||||
logtxt_dt = DateTime.Now;
|
|
||||||
}
|
|
||||||
await readerHander(dr, resultIndex);
|
await readerHander(dr, resultIndex);
|
||||||
if (IsTracePerformance) logtxt.Append(" readerHanderAsync: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms (").Append(string.Join(", ", values)).Append(")\r\n");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (++resultIndex >= multipleResult || dr.NextResult() == false) break;
|
if (++resultIndex >= multipleResult || dr.NextResult() == false) break;
|
||||||
}
|
}
|
||||||
if (IsTracePerformance) logtxt_dt = DateTime.Now;
|
|
||||||
dr.Close();
|
dr.Close();
|
||||||
}
|
}
|
||||||
if (IsTracePerformance) logtxt.Append("ExecuteReaderAsync_dispose: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
if (IsTracePerformance)
|
||||||
|
{
|
||||||
|
logtxt.Append("ExecuteReader: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
||||||
|
logtxt_dt = DateTime.Now;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex2)
|
catch (Exception ex2)
|
||||||
{
|
{
|
||||||
@ -563,7 +554,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
{
|
{
|
||||||
if (IsTracePerformance) logtxt_dt = DateTime.Now;
|
if (IsTracePerformance) logtxt_dt = DateTime.Now;
|
||||||
ReturnConnection(pool, conn, ex); //pool.Return(conn, ex);
|
ReturnConnection(pool, conn, ex); //pool.Return(conn, ex);
|
||||||
if (IsTracePerformance) logtxt.Append("ReleaseConnection: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms");
|
if (IsTracePerformance) logtxt.Append("Pool.Return: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms");
|
||||||
}
|
}
|
||||||
LoggerException(pool, pc, ex, dt, logtxt);
|
LoggerException(pool, pc, ex, dt, logtxt);
|
||||||
pc.cmd.Parameters.Clear();
|
pc.cmd.Parameters.Clear();
|
||||||
@ -665,7 +656,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
{
|
{
|
||||||
if (IsTracePerformance) logtxt_dt = DateTime.Now;
|
if (IsTracePerformance) logtxt_dt = DateTime.Now;
|
||||||
ReturnConnection(MasterPool, conn, ex); //this.MasterPool.Return(conn, ex);
|
ReturnConnection(MasterPool, conn, ex); //this.MasterPool.Return(conn, ex);
|
||||||
if (IsTracePerformance) logtxt.Append("ReleaseConnection: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms");
|
if (IsTracePerformance) logtxt.Append("Pool.Return: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms");
|
||||||
}
|
}
|
||||||
LoggerException(this.MasterPool, pc, ex, dt, logtxt);
|
LoggerException(this.MasterPool, pc, ex, dt, logtxt);
|
||||||
pc.cmd.Parameters.Clear();
|
pc.cmd.Parameters.Clear();
|
||||||
@ -701,7 +692,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
{
|
{
|
||||||
if (IsTracePerformance) logtxt_dt = DateTime.Now;
|
if (IsTracePerformance) logtxt_dt = DateTime.Now;
|
||||||
ReturnConnection(MasterPool, conn, ex); //this.MasterPool.Return(conn, ex);
|
ReturnConnection(MasterPool, conn, ex); //this.MasterPool.Return(conn, ex);
|
||||||
if (IsTracePerformance) logtxt.Append("ReleaseConnection: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms");
|
if (IsTracePerformance) logtxt.Append("Pool.Return: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms");
|
||||||
}
|
}
|
||||||
LoggerException(this.MasterPool, pc, ex, dt, logtxt);
|
LoggerException(this.MasterPool, pc, ex, dt, logtxt);
|
||||||
pc.cmd.Parameters.Clear();
|
pc.cmd.Parameters.Clear();
|
||||||
@ -709,7 +700,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
async Task<(DbCommand cmd, bool isclose)> PrepareCommandAsync(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, DbParameter[] cmdParms, StringBuilder logtxt)
|
async Task<(Aop.CommandBeforeEventArgs before, DbCommand cmd, bool isclose)> PrepareCommandAsync(DbConnection connection, DbTransaction transaction, CommandType cmdType, string cmdText, DbParameter[] cmdParms, StringBuilder logtxt)
|
||||||
{
|
{
|
||||||
DateTime dt = DateTime.Now;
|
DateTime dt = DateTime.Now;
|
||||||
DbCommand cmd = CreateCommand();
|
DbCommand cmd = CreateCommand();
|
||||||
@ -733,10 +724,8 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
|
|
||||||
if (tran != null)
|
if (tran != null)
|
||||||
{
|
{
|
||||||
if (IsTracePerformance) dt = DateTime.Now;
|
|
||||||
cmd.Connection = tran.Connection;
|
cmd.Connection = tran.Connection;
|
||||||
cmd.Transaction = tran;
|
cmd.Transaction = tran;
|
||||||
if (IsTracePerformance) logtxt.Append(" PrepareCommandAsync_tran!=null: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -745,7 +734,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
{
|
{
|
||||||
if (IsTracePerformance) dt = DateTime.Now;
|
if (IsTracePerformance) dt = DateTime.Now;
|
||||||
await connection.OpenAsync();
|
await connection.OpenAsync();
|
||||||
if (IsTracePerformance) logtxt.Append(" PrepareCommand_ConnectionOpenAsync: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
if (IsTracePerformance) logtxt.Append(" PrepareCommand_ConnectionOpen: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n");
|
||||||
isclose = true;
|
isclose = true;
|
||||||
}
|
}
|
||||||
cmd.Connection = connection;
|
cmd.Connection = connection;
|
||||||
@ -753,10 +742,9 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
cmd.Transaction = transaction;
|
cmd.Transaction = transaction;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsTracePerformance) logtxt.Append(" PrepareCommandAsync ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms cmdParms: ").Append(cmd.Parameters.Count).Append("\r\n");
|
var before = new Aop.CommandBeforeEventArgs(cmd);
|
||||||
|
_util?._orm?.Aop.CommandBeforeHandler?.Invoke(_util._orm, before);
|
||||||
AopCommandExecuting?.Invoke(cmd);
|
return (before, cmd, isclose);
|
||||||
return (cmd, isclose);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
|
|
||||||
class Transaction2
|
class Transaction2
|
||||||
{
|
{
|
||||||
|
internal Aop.TraceBeforeEventArgs AopBefore;
|
||||||
internal Object<DbConnection> Conn;
|
internal Object<DbConnection> Conn;
|
||||||
internal DbTransaction Transaction;
|
internal DbTransaction Transaction;
|
||||||
internal DateTime RunTime;
|
internal DateTime RunTime;
|
||||||
@ -33,6 +34,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
private object _trans_lock = new object();
|
private object _trans_lock = new object();
|
||||||
|
|
||||||
public DbTransaction TransactionCurrentThread => _trans.TryGetValue(Thread.CurrentThread.ManagedThreadId, out var conn) && conn.Transaction?.Connection != null ? conn.Transaction : null;
|
public DbTransaction TransactionCurrentThread => _trans.TryGetValue(Thread.CurrentThread.ManagedThreadId, out var conn) && conn.Transaction?.Connection != null ? conn.Transaction : null;
|
||||||
|
public Aop.TraceBeforeEventArgs TransactionCurrentThreadAopBefore => _trans.TryGetValue(Thread.CurrentThread.ManagedThreadId, out var conn) && conn.Transaction?.Connection != null ? conn.AopBefore : null;
|
||||||
|
|
||||||
public void BeginTransaction(TimeSpan timeout, IsolationLevel? isolationLevel)
|
public void BeginTransaction(TimeSpan timeout, IsolationLevel? isolationLevel)
|
||||||
{
|
{
|
||||||
@ -41,16 +43,21 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
int tid = Thread.CurrentThread.ManagedThreadId;
|
int tid = Thread.CurrentThread.ManagedThreadId;
|
||||||
Transaction2 tran = null;
|
Transaction2 tran = null;
|
||||||
Object<DbConnection> conn = null;
|
Object<DbConnection> conn = null;
|
||||||
|
var before = new Aop.TraceBeforeEventArgs("ThreadTransaction", isolationLevel);
|
||||||
|
_util?._orm?.Aop.TraceBeforeHandler?.Invoke(this, before);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
conn = MasterPool.Get();
|
conn = MasterPool.Get();
|
||||||
tran = new Transaction2(conn, isolationLevel == null ? conn.Value.BeginTransaction() : conn.Value.BeginTransaction(isolationLevel.Value), timeout);
|
tran = new Transaction2(conn, isolationLevel == null ? conn.Value.BeginTransaction() : conn.Value.BeginTransaction(isolationLevel.Value), timeout);
|
||||||
|
tran.AopBefore = before;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Trace.WriteLine($"数据库出错(开启事务){ex.Message} \r\n{ex.StackTrace}");
|
Trace.WriteLine($"数据库出错(开启事务){ex.Message} \r\n{ex.StackTrace}");
|
||||||
MasterPool.Return(conn);
|
MasterPool.Return(conn);
|
||||||
|
var after = new Aop.TraceAfterEventArgs(before, "", ex);
|
||||||
|
_util?._orm?.Aop.TraceAfterHandler?.Invoke(this, after);
|
||||||
throw ex;
|
throw ex;
|
||||||
}
|
}
|
||||||
if (_trans.ContainsKey(tid)) CommitTransaction();
|
if (_trans.ContainsKey(tid)) CommitTransaction();
|
||||||
@ -59,17 +66,17 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
_trans.TryAdd(tid, tran);
|
_trans.TryAdd(tid, tran);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AutoCommitTransaction()
|
private void CommitTimeoutTransaction()
|
||||||
{
|
{
|
||||||
if (_trans.Count > 0)
|
if (_trans.Count > 0)
|
||||||
{
|
{
|
||||||
Transaction2[] trans = null;
|
Transaction2[] trans = null;
|
||||||
lock (_trans_lock)
|
lock (_trans_lock)
|
||||||
trans = _trans.Values.Where(st2 => DateTime.Now.Subtract(st2.RunTime) > st2.Timeout).ToArray();
|
trans = _trans.Values.Where(st2 => DateTime.Now.Subtract(st2.RunTime) > st2.Timeout).ToArray();
|
||||||
foreach (Transaction2 tran in trans) CommitTransaction(true, tran);
|
foreach (Transaction2 tran in trans) CommitTransaction(true, tran, null, "Timeout自动提交");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void CommitTransaction(bool isCommit, Transaction2 tran)
|
private void CommitTransaction(bool isCommit, Transaction2 tran, Exception rollbackException, string remark = null)
|
||||||
{
|
{
|
||||||
if (tran == null || tran.Transaction == null || tran.Transaction.Connection == null) return;
|
if (tran == null || tran.Transaction == null || tran.Transaction.Connection == null) return;
|
||||||
|
|
||||||
@ -79,29 +86,34 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
_trans.TryRemove(tran.Conn.LastGetThreadId, out var oldtran);
|
_trans.TryRemove(tran.Conn.LastGetThreadId, out var oldtran);
|
||||||
|
|
||||||
Exception ex = null;
|
Exception ex = null;
|
||||||
var f001 = isCommit ? "提交" : "回滚";
|
if (string.IsNullOrEmpty(remark)) remark = isCommit ? "提交" : "回滚";
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Trace.WriteLine($"线程{tran.Conn.LastGetThreadId}事务{f001}");
|
Trace.WriteLine($"线程{tran.Conn.LastGetThreadId}事务{remark}");
|
||||||
if (isCommit) tran.Transaction.Commit();
|
if (isCommit) tran.Transaction.Commit();
|
||||||
else tran.Transaction.Rollback();
|
else tran.Transaction.Rollback();
|
||||||
}
|
}
|
||||||
catch (Exception ex2)
|
catch (Exception ex2)
|
||||||
{
|
{
|
||||||
ex = ex2;
|
ex = ex2;
|
||||||
Trace.WriteLine($"数据库出错({f001}事务):{ex.Message} {ex.StackTrace}");
|
Trace.WriteLine($"数据库出错({remark}事务):{ex.Message} {ex.StackTrace}");
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
ReturnConnection(MasterPool, tran.Conn, ex); //MasterPool.Return(tran.Conn, ex);
|
ReturnConnection(MasterPool, tran.Conn, ex); //MasterPool.Return(tran.Conn, ex);
|
||||||
|
|
||||||
|
var after = new Aop.TraceAfterEventArgs(tran.AopBefore, remark, ex ?? rollbackException);
|
||||||
|
_util?._orm?.Aop.TraceAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void CommitTransaction(bool isCommit)
|
public void CommitTransaction()
|
||||||
{
|
{
|
||||||
if (_trans.TryGetValue(Thread.CurrentThread.ManagedThreadId, out var tran)) CommitTransaction(isCommit, tran);
|
if (_trans.TryGetValue(Thread.CurrentThread.ManagedThreadId, out var tran)) CommitTransaction(true, tran, null);
|
||||||
|
}
|
||||||
|
public void RollbackTransaction(Exception ex)
|
||||||
|
{
|
||||||
|
if (_trans.TryGetValue(Thread.CurrentThread.ManagedThreadId, out var tran)) CommitTransaction(false, tran, ex);
|
||||||
}
|
}
|
||||||
public void CommitTransaction() => CommitTransaction(true);
|
|
||||||
public void RollbackTransaction() => CommitTransaction(false);
|
|
||||||
|
|
||||||
public void Transaction(Action handler) => TransactionInternal(null, TimeSpan.FromSeconds(60), handler);
|
public void Transaction(Action handler) => TransactionInternal(null, TimeSpan.FromSeconds(60), handler);
|
||||||
public void Transaction(TimeSpan timeout, Action handler) => TransactionInternal(null, timeout, handler);
|
public void Transaction(TimeSpan timeout, Action handler) => TransactionInternal(null, timeout, handler);
|
||||||
@ -117,7 +129,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
RollbackTransaction();
|
RollbackTransaction(ex);
|
||||||
throw ex;
|
throw ex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -132,7 +144,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
Transaction2[] trans = null;
|
Transaction2[] trans = null;
|
||||||
lock (_trans_lock)
|
lock (_trans_lock)
|
||||||
trans = _trans.Values.ToArray();
|
trans = _trans.Values.ToArray();
|
||||||
foreach (Transaction2 tran in trans) CommitTransaction(false, tran);
|
foreach (Transaction2 tran in trans) CommitTransaction(false, tran, null, "Dispose自动提交");
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
|
|
||||||
|
@ -8,13 +8,38 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
{
|
{
|
||||||
public class AopProvider : IAop
|
public class AopProvider : IAop
|
||||||
{
|
{
|
||||||
public EventHandler<Aop.ParseExpressionEventArgs> ParseExpression { get; set; }
|
public event EventHandler<Aop.ParseExpressionEventArgs> ParseExpression;
|
||||||
public EventHandler<Aop.ConfigEntityEventArgs> ConfigEntity { get; set; }
|
public event EventHandler<Aop.ConfigEntityEventArgs> ConfigEntity;
|
||||||
public EventHandler<Aop.ConfigEntityPropertyEventArgs> ConfigEntityProperty { get; set; }
|
public event EventHandler<Aop.ConfigEntityPropertyEventArgs> ConfigEntityProperty;
|
||||||
public EventHandler<Aop.CurdBeforeEventArgs> CurdBefore { get; set; }
|
|
||||||
public EventHandler<Aop.CurdAfterEventArgs> CurdAfter { get; set; }
|
public event EventHandler<Aop.CurdBeforeEventArgs> CurdBefore;
|
||||||
public EventHandler<Aop.SyncStructureBeforeEventArgs> SyncStructureBefore { get; set; }
|
public event EventHandler<Aop.CurdAfterEventArgs> CurdAfter;
|
||||||
public EventHandler<Aop.SyncStructureAfterEventArgs> SyncStructureAfter { get; set; }
|
public event EventHandler<Aop.SyncStructureBeforeEventArgs> SyncStructureBefore;
|
||||||
public EventHandler<Aop.AuditValueEventArgs> AuditValue { get; set; }
|
public event EventHandler<Aop.SyncStructureAfterEventArgs> SyncStructureAfter;
|
||||||
|
|
||||||
|
public event EventHandler<Aop.AuditValueEventArgs> AuditValue;
|
||||||
|
|
||||||
|
public event EventHandler<Aop.CommandBeforeEventArgs> CommandBefore;
|
||||||
|
public event EventHandler<Aop.CommandAfterEventArgs> CommandAfter;
|
||||||
|
public event EventHandler<Aop.TraceBeforeEventArgs> TraceBefore;
|
||||||
|
public event EventHandler<Aop.TraceAfterEventArgs> TraceAfter;
|
||||||
|
|
||||||
|
//------------- Handler
|
||||||
|
|
||||||
|
public EventHandler<Aop.ParseExpressionEventArgs> ParseExpressionHandler => ParseExpression;
|
||||||
|
public EventHandler<Aop.ConfigEntityEventArgs> ConfigEntityHandler => ConfigEntity;
|
||||||
|
public EventHandler<Aop.ConfigEntityPropertyEventArgs> ConfigEntityPropertyHandler => ConfigEntityProperty;
|
||||||
|
|
||||||
|
public EventHandler<Aop.CurdBeforeEventArgs> CurdBeforeHandler => CurdBefore;
|
||||||
|
public EventHandler<Aop.CurdAfterEventArgs> CurdAfterHandler => CurdAfter;
|
||||||
|
public EventHandler<Aop.SyncStructureBeforeEventArgs> SyncStructureBeforeHandler => SyncStructureBefore;
|
||||||
|
public EventHandler<Aop.SyncStructureAfterEventArgs> SyncStructureAfterHandler => SyncStructureAfter;
|
||||||
|
|
||||||
|
public EventHandler<Aop.AuditValueEventArgs> AuditValueHandler => AuditValue;
|
||||||
|
|
||||||
|
public EventHandler<Aop.CommandBeforeEventArgs> CommandBeforeHandler => CommandBefore;
|
||||||
|
public EventHandler<Aop.CommandAfterEventArgs> CommandAfterHandler => CommandAfter;
|
||||||
|
public EventHandler<Aop.TraceBeforeEventArgs> TraceBeforeHandler => TraceBefore;
|
||||||
|
public EventHandler<Aop.TraceAfterEventArgs> TraceAfterHandler => TraceAfter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
.Select(a => (a.entityType, GetTableNameLowerOrUpper(a.tableName))).ToArray();
|
.Select(a => (a.entityType, GetTableNameLowerOrUpper(a.tableName))).ToArray();
|
||||||
if (syncObjects.Any() == false) return false;
|
if (syncObjects.Any() == false) return false;
|
||||||
var before = new Aop.SyncStructureBeforeEventArgs(syncObjects.Select(a => a.entityType).ToArray());
|
var before = new Aop.SyncStructureBeforeEventArgs(syncObjects.Select(a => a.entityType).ToArray());
|
||||||
_orm.Aop.SyncStructureBefore?.Invoke(this, before);
|
_orm.Aop.SyncStructureBeforeHandler?.Invoke(this, before);
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
string ddl = null;
|
string ddl = null;
|
||||||
try
|
try
|
||||||
@ -110,7 +110,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.SyncStructureAfterEventArgs(before, ddl, exception);
|
var after = new Aop.SyncStructureAfterEventArgs(before, ddl, exception);
|
||||||
_orm.Aop.SyncStructureAfter?.Invoke(this, after);
|
_orm.Aop.SyncStructureAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
if (string.IsNullOrEmpty(sql)) return 0;
|
if (string.IsNullOrEmpty(sql)) return 0;
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var affrows = 0;
|
var affrows = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -78,7 +78,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
|
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return affrows;
|
return affrows;
|
||||||
|
@ -19,7 +19,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
if (string.IsNullOrEmpty(sql)) return 0;
|
if (string.IsNullOrEmpty(sql)) return 0;
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var affrows = 0;
|
var affrows = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -34,7 +34,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
|
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return affrows;
|
return affrows;
|
||||||
|
@ -121,7 +121,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
source = source.Where(a => a != null).ToList();
|
source = source.Where(a => a != null).ToList();
|
||||||
AuditDataValue(this, source, _orm, _table, _auditValueChangedDict);
|
AuditDataValue(this, source, _orm, _table, _auditValueChangedDict);
|
||||||
_source.AddRange(source);
|
_source.AddRange(source);
|
||||||
|
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@ -151,10 +151,10 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (orm.Aop.AuditValue != null)
|
if (orm.Aop.AuditValueHandler != null)
|
||||||
{
|
{
|
||||||
var auditArgs = new Aop.AuditValueEventArgs(Aop.AuditValueType.Insert, col, table.Properties[col.CsName], val);
|
var auditArgs = new Aop.AuditValueEventArgs(Aop.AuditValueType.Insert, col, table.Properties[col.CsName], val);
|
||||||
orm.Aop.AuditValue(sender, auditArgs);
|
orm.Aop.AuditValueHandler(sender, auditArgs);
|
||||||
if (auditArgs.IsChanged)
|
if (auditArgs.IsChanged)
|
||||||
{
|
{
|
||||||
col.SetMapValue(data, val = auditArgs.Value);
|
col.SetMapValue(data, val = auditArgs.Value);
|
||||||
@ -208,35 +208,55 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
if (_transaction == null)
|
if (_transaction == null)
|
||||||
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
||||||
|
|
||||||
if (_transaction != null || _batchAutoTransaction == false)
|
var before = new Aop.TraceBeforeEventArgs("SplitExecuteAffrows", null);
|
||||||
|
_orm.Aop.TraceBeforeHandler?.Invoke(this, before);
|
||||||
|
Exception exception = null;
|
||||||
|
try
|
||||||
{
|
{
|
||||||
for (var a = 0; a < ss.Length; a++)
|
if (_transaction != null || _batchAutoTransaction == false)
|
||||||
{
|
{
|
||||||
_source = ss[a];
|
for (var a = 0; a < ss.Length; a++)
|
||||||
ret += this.RawExecuteAffrows();
|
{
|
||||||
|
_source = ss[a];
|
||||||
|
ret += this.RawExecuteAffrows();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
using (var conn = _orm.Ado.MasterPool.Get())
|
||||||
|
{
|
||||||
|
_transaction = conn.Value.BeginTransaction();
|
||||||
|
var transBefore = new Aop.TraceBeforeEventArgs("BeginTransaction", null);
|
||||||
|
_orm.Aop.TraceBeforeHandler?.Invoke(this, transBefore);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
for (var a = 0; a < ss.Length; a++)
|
||||||
|
{
|
||||||
|
_source = ss[a];
|
||||||
|
ret += this.RawExecuteAffrows();
|
||||||
|
}
|
||||||
|
_transaction.Commit();
|
||||||
|
_orm.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(transBefore, "提交", null));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_transaction.Rollback();
|
||||||
|
_orm.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(transBefore, "回滚", ex));
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
_transaction = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
using (var conn = _orm.Ado.MasterPool.Get())
|
exception = ex;
|
||||||
{
|
throw ex;
|
||||||
_transaction = conn.Value.BeginTransaction();
|
}
|
||||||
try
|
finally
|
||||||
{
|
{
|
||||||
for (var a = 0; a < ss.Length; a++)
|
var after = new Aop.TraceAfterEventArgs(before, null, exception);
|
||||||
{
|
_orm.Aop.TraceAfterHandler?.Invoke(this, after);
|
||||||
_source = ss[a];
|
|
||||||
ret += this.RawExecuteAffrows();
|
|
||||||
}
|
|
||||||
_transaction.Commit();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
_transaction.Rollback();
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
_transaction = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ClearData();
|
ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
@ -260,37 +280,57 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
if (_transaction == null)
|
if (_transaction == null)
|
||||||
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
||||||
|
|
||||||
if (_transaction != null || _batchAutoTransaction == false)
|
var before = new Aop.TraceBeforeEventArgs("SplitExecuteIdentity", null);
|
||||||
|
_orm.Aop.TraceBeforeHandler?.Invoke(this, before);
|
||||||
|
Exception exception = null;
|
||||||
|
try
|
||||||
{
|
{
|
||||||
for (var a = 0; a < ss.Length; a++)
|
if (_transaction != null || _batchAutoTransaction == false)
|
||||||
{
|
{
|
||||||
_source = ss[a];
|
for (var a = 0; a < ss.Length; a++)
|
||||||
if (a < ss.Length - 1) this.RawExecuteAffrows();
|
{
|
||||||
else ret = this.RawExecuteIdentity();
|
_source = ss[a];
|
||||||
|
if (a < ss.Length - 1) this.RawExecuteAffrows();
|
||||||
|
else ret = this.RawExecuteIdentity();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
using (var conn = _orm.Ado.MasterPool.Get())
|
||||||
|
{
|
||||||
|
_transaction = conn.Value.BeginTransaction();
|
||||||
|
var transBefore = new Aop.TraceBeforeEventArgs("BeginTransaction", null);
|
||||||
|
_orm.Aop.TraceBeforeHandler?.Invoke(this, transBefore);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
for (var a = 0; a < ss.Length; a++)
|
||||||
|
{
|
||||||
|
_source = ss[a];
|
||||||
|
if (a < ss.Length - 1) this.RawExecuteAffrows();
|
||||||
|
else ret = this.RawExecuteIdentity();
|
||||||
|
}
|
||||||
|
_transaction.Commit();
|
||||||
|
_orm.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(transBefore, "提交", null));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_transaction.Rollback();
|
||||||
|
_orm.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(transBefore, "回滚", ex));
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
_transaction = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
using (var conn = _orm.Ado.MasterPool.Get())
|
exception = ex;
|
||||||
{
|
throw ex;
|
||||||
_transaction = conn.Value.BeginTransaction();
|
}
|
||||||
try
|
finally
|
||||||
{
|
{
|
||||||
for (var a = 0; a < ss.Length; a++)
|
var after = new Aop.TraceAfterEventArgs(before, null, exception);
|
||||||
{
|
_orm.Aop.TraceAfterHandler?.Invoke(this, after);
|
||||||
_source = ss[a];
|
|
||||||
if (a < ss.Length - 1) this.RawExecuteAffrows();
|
|
||||||
else ret = this.RawExecuteIdentity();
|
|
||||||
}
|
|
||||||
_transaction.Commit();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
_transaction.Rollback();
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
_transaction = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ClearData();
|
ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
@ -314,35 +354,55 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
if (_transaction == null)
|
if (_transaction == null)
|
||||||
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
||||||
|
|
||||||
if (_transaction != null || _batchAutoTransaction == false)
|
var before = new Aop.TraceBeforeEventArgs("SplitExecuteInserted", null);
|
||||||
|
_orm.Aop.TraceBeforeHandler?.Invoke(this, before);
|
||||||
|
Exception exception = null;
|
||||||
|
try
|
||||||
{
|
{
|
||||||
for (var a = 0; a < ss.Length; a++)
|
if (_transaction != null || _batchAutoTransaction == false)
|
||||||
{
|
{
|
||||||
_source = ss[a];
|
for (var a = 0; a < ss.Length; a++)
|
||||||
ret.AddRange(this.RawExecuteInserted());
|
{
|
||||||
|
_source = ss[a];
|
||||||
|
ret.AddRange(this.RawExecuteInserted());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
using (var conn = _orm.Ado.MasterPool.Get())
|
||||||
|
{
|
||||||
|
_transaction = conn.Value.BeginTransaction();
|
||||||
|
var transBefore = new Aop.TraceBeforeEventArgs("BeginTransaction", null);
|
||||||
|
_orm.Aop.TraceBeforeHandler?.Invoke(this, transBefore);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
for (var a = 0; a < ss.Length; a++)
|
||||||
|
{
|
||||||
|
_source = ss[a];
|
||||||
|
ret.AddRange(this.RawExecuteInserted());
|
||||||
|
}
|
||||||
|
_transaction.Commit();
|
||||||
|
_orm.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(transBefore, "提交", null));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_transaction.Rollback();
|
||||||
|
_orm.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(transBefore, "回滚", ex));
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
_transaction = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
using (var conn = _orm.Ado.MasterPool.Get())
|
exception = ex;
|
||||||
{
|
throw ex;
|
||||||
_transaction = conn.Value.BeginTransaction();
|
}
|
||||||
try
|
finally
|
||||||
{
|
{
|
||||||
for (var a = 0; a < ss.Length; a++)
|
var after = new Aop.TraceAfterEventArgs(before, null, exception);
|
||||||
{
|
_orm.Aop.TraceAfterHandler?.Invoke(this, after);
|
||||||
_source = ss[a];
|
|
||||||
ret.AddRange(this.RawExecuteInserted());
|
|
||||||
}
|
|
||||||
_transaction.Commit();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
_transaction.Rollback();
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
_transaction = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ClearData();
|
ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
@ -353,7 +413,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
{
|
{
|
||||||
var sql = ToSql();
|
var sql = ToSql();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var affrows = 0;
|
var affrows = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -368,7 +428,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
|
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
@ -507,4 +567,3 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,35 +34,55 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
if (_transaction == null)
|
if (_transaction == null)
|
||||||
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
||||||
|
|
||||||
if (_transaction != null)
|
var before = new Aop.TraceBeforeEventArgs("SplitExecuteAffrowsAsync", null);
|
||||||
|
_orm.Aop.TraceBeforeHandler?.Invoke(this, before);
|
||||||
|
Exception exception = null;
|
||||||
|
try
|
||||||
{
|
{
|
||||||
for (var a = 0; a < ss.Length; a++)
|
if (_transaction != null || _batchAutoTransaction == false)
|
||||||
{
|
{
|
||||||
_source = ss[a];
|
for (var a = 0; a < ss.Length; a++)
|
||||||
ret += await this.RawExecuteAffrowsAsync();
|
{
|
||||||
|
_source = ss[a];
|
||||||
|
ret += await this.RawExecuteAffrowsAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
using (var conn = await _orm.Ado.MasterPool.GetAsync())
|
||||||
|
{
|
||||||
|
_transaction = conn.Value.BeginTransaction();
|
||||||
|
var transBefore = new Aop.TraceBeforeEventArgs("BeginTransaction", null);
|
||||||
|
_orm.Aop.TraceBeforeHandler?.Invoke(this, transBefore);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
for (var a = 0; a < ss.Length; a++)
|
||||||
|
{
|
||||||
|
_source = ss[a];
|
||||||
|
ret += await this.RawExecuteAffrowsAsync();
|
||||||
|
}
|
||||||
|
_transaction.Commit();
|
||||||
|
_orm.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(transBefore, "提交", null));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_transaction.Rollback();
|
||||||
|
_orm.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(transBefore, "回滚", ex));
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
_transaction = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
using (var conn = await _orm.Ado.MasterPool.GetAsync())
|
exception = ex;
|
||||||
{
|
throw ex;
|
||||||
_transaction = conn.Value.BeginTransaction();
|
}
|
||||||
try
|
finally
|
||||||
{
|
{
|
||||||
for (var a = 0; a < ss.Length; a++)
|
var after = new Aop.TraceAfterEventArgs(before, null, exception);
|
||||||
{
|
_orm.Aop.TraceAfterHandler?.Invoke(this, after);
|
||||||
_source = ss[a];
|
|
||||||
ret += await this.RawExecuteAffrowsAsync();
|
|
||||||
}
|
|
||||||
_transaction.Commit();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
_transaction.Rollback();
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
_transaction = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ClearData();
|
ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
@ -86,42 +106,62 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
if (_transaction == null)
|
if (_transaction == null)
|
||||||
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
||||||
|
|
||||||
if (_transaction != null)
|
var before = new Aop.TraceBeforeEventArgs("SplitExecuteIdentityAsync", null);
|
||||||
|
_orm.Aop.TraceBeforeHandler?.Invoke(this, before);
|
||||||
|
Exception exception = null;
|
||||||
|
try
|
||||||
{
|
{
|
||||||
for (var a = 0; a < ss.Length; a++)
|
if (_transaction != null || _batchAutoTransaction == false)
|
||||||
{
|
{
|
||||||
_source = ss[a];
|
for (var a = 0; a < ss.Length; a++)
|
||||||
if (a < ss.Length - 1) await this.RawExecuteAffrowsAsync();
|
{
|
||||||
else ret = await this.RawExecuteIdentityAsync();
|
_source = ss[a];
|
||||||
|
if (a < ss.Length - 1) await this.RawExecuteAffrowsAsync();
|
||||||
|
else ret = await this.RawExecuteIdentityAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
using (var conn = await _orm.Ado.MasterPool.GetAsync())
|
||||||
|
{
|
||||||
|
_transaction = conn.Value.BeginTransaction();
|
||||||
|
var transBefore = new Aop.TraceBeforeEventArgs("BeginTransaction", null);
|
||||||
|
_orm.Aop.TraceBeforeHandler?.Invoke(this, transBefore);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
for (var a = 0; a < ss.Length; a++)
|
||||||
|
{
|
||||||
|
_source = ss[a];
|
||||||
|
if (a < ss.Length - 1) await this.RawExecuteAffrowsAsync();
|
||||||
|
else ret = await this.RawExecuteIdentityAsync();
|
||||||
|
}
|
||||||
|
_transaction.Commit();
|
||||||
|
_orm.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(transBefore, "提交", null));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_transaction.Rollback();
|
||||||
|
_orm.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(transBefore, "回滚", ex));
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
_transaction = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
using (var conn = await _orm.Ado.MasterPool.GetAsync())
|
exception = ex;
|
||||||
{
|
throw ex;
|
||||||
_transaction = conn.Value.BeginTransaction();
|
}
|
||||||
try
|
finally
|
||||||
{
|
{
|
||||||
for (var a = 0; a < ss.Length; a++)
|
var after = new Aop.TraceAfterEventArgs(before, null, exception);
|
||||||
{
|
_orm.Aop.TraceAfterHandler?.Invoke(this, after);
|
||||||
_source = ss[a];
|
|
||||||
if (a < ss.Length - 1) await this.RawExecuteAffrowsAsync();
|
|
||||||
else ret = await this.RawExecuteIdentityAsync();
|
|
||||||
}
|
|
||||||
_transaction.Commit();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
_transaction.Rollback();
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
_transaction = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ClearData();
|
ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
async protected Task<List<T1>> SplitExecuteInsertedAsync(int valuesLimit, int parameterLimit)
|
async protected Task<List<T1>> SplitExecuteInsertedAsync(int valuesLimit, int parameterLimit)
|
||||||
{
|
{
|
||||||
var ss = SplitSource(valuesLimit, parameterLimit);
|
var ss = SplitSource(valuesLimit, parameterLimit);
|
||||||
@ -140,35 +180,55 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
if (_transaction == null)
|
if (_transaction == null)
|
||||||
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
||||||
|
|
||||||
if (_transaction != null)
|
var before = new Aop.TraceBeforeEventArgs("SplitExecuteInsertedAsync", null);
|
||||||
|
_orm.Aop.TraceBeforeHandler?.Invoke(this, before);
|
||||||
|
Exception exception = null;
|
||||||
|
try
|
||||||
{
|
{
|
||||||
for (var a = 0; a < ss.Length; a++)
|
if (_transaction != null || _batchAutoTransaction == false)
|
||||||
{
|
{
|
||||||
_source = ss[a];
|
for (var a = 0; a < ss.Length; a++)
|
||||||
ret.AddRange(await this.RawExecuteInsertedAsync());
|
{
|
||||||
|
_source = ss[a];
|
||||||
|
ret.AddRange(await this.RawExecuteInsertedAsync());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
using (var conn = await _orm.Ado.MasterPool.GetAsync())
|
||||||
|
{
|
||||||
|
_transaction = conn.Value.BeginTransaction();
|
||||||
|
var transBefore = new Aop.TraceBeforeEventArgs("BeginTransaction", null);
|
||||||
|
_orm.Aop.TraceBeforeHandler?.Invoke(this, transBefore);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
for (var a = 0; a < ss.Length; a++)
|
||||||
|
{
|
||||||
|
_source = ss[a];
|
||||||
|
ret.AddRange(await this.RawExecuteInsertedAsync());
|
||||||
|
}
|
||||||
|
_transaction.Commit();
|
||||||
|
_orm.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(transBefore, "提交", null));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_transaction.Rollback();
|
||||||
|
_orm.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(transBefore, "回滚", ex));
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
_transaction = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
using (var conn = await _orm.Ado.MasterPool.GetAsync())
|
exception = ex;
|
||||||
{
|
throw ex;
|
||||||
_transaction = conn.Value.BeginTransaction();
|
}
|
||||||
try
|
finally
|
||||||
{
|
{
|
||||||
for (var a = 0; a < ss.Length; a++)
|
var after = new Aop.TraceAfterEventArgs(before, null, exception);
|
||||||
{
|
_orm.Aop.TraceAfterHandler?.Invoke(this, after);
|
||||||
_source = ss[a];
|
|
||||||
ret.AddRange(await this.RawExecuteInsertedAsync());
|
|
||||||
}
|
|
||||||
_transaction.Commit();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
_transaction.Rollback();
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
_transaction = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ClearData();
|
ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
@ -178,7 +238,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
{
|
{
|
||||||
var sql = ToSql();
|
var sql = ToSql();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var affrows = 0;
|
var affrows = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -193,7 +253,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
|
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
@ -207,4 +267,3 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -299,7 +299,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
var sql = this.ToSql(field);
|
var sql = this.ToSql(field);
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
DataTable ret = null;
|
DataTable ret = null;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -314,7 +314,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -325,7 +325,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
var type = typeof(TTuple);
|
var type = typeof(TTuple);
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<TTuple>();
|
var ret = new List<TTuple>();
|
||||||
var flagStr = $"ToListField:{field}";
|
var flagStr = $"ToListField:{field}";
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
@ -345,7 +345,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -353,7 +353,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
{
|
{
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -377,7 +377,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
foreach (var include in _includeToList) include?.Invoke(ret);
|
foreach (var include in _includeToList) include?.Invoke(ret);
|
||||||
_trackToList?.Invoke(ret);
|
_trackToList?.Invoke(ret);
|
||||||
@ -403,7 +403,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
{
|
{
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
var retCount = 0;
|
var retCount = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
@ -444,7 +444,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, retCount);
|
var after = new Aop.CurdAfterEventArgs(before, exception, retCount);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
if (ret.Any() || checkDoneTimes == 0)
|
if (ret.Any() || checkDoneTimes == 0)
|
||||||
{
|
{
|
||||||
@ -492,7 +492,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
var type = typeof(TReturn);
|
var type = typeof(TReturn);
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<TReturn>();
|
var ret = new List<TReturn>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -514,7 +514,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
if (typeof(TReturn) == typeof(T1))
|
if (typeof(TReturn) == typeof(T1))
|
||||||
foreach (var include in _includeToList) include?.Invoke(ret);
|
foreach (var include in _includeToList) include?.Invoke(ret);
|
||||||
@ -1082,7 +1082,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
var sql = this.InternalToSql<int>(select);
|
var sql = this.InternalToSql<int>(select);
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
DataTable ret = null;
|
DataTable ret = null;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -1097,7 +1097,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -1142,7 +1142,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
var sql = this.ToSql(field);
|
var sql = this.ToSql(field);
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
DataTable ret = null;
|
DataTable ret = null;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -1157,7 +1157,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -1168,7 +1168,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
var type = typeof(TTuple);
|
var type = typeof(TTuple);
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<TTuple>();
|
var ret = new List<TTuple>();
|
||||||
var flagStr = $"ToListField:{field}";
|
var flagStr = $"ToListField:{field}";
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
@ -1189,7 +1189,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -1198,7 +1198,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
{
|
{
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -1223,7 +1223,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
foreach (var include in _includeToListAsync) await include?.Invoke(ret);
|
foreach (var include in _includeToListAsync) await include?.Invoke(ret);
|
||||||
_trackToList?.Invoke(ret);
|
_trackToList?.Invoke(ret);
|
||||||
@ -1265,7 +1265,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
var type = typeof(TReturn);
|
var type = typeof(TReturn);
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<TReturn>();
|
var ret = new List<TReturn>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -1288,7 +1288,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
if (typeof(TReturn) == typeof(T1))
|
if (typeof(TReturn) == typeof(T1))
|
||||||
foreach (var include in _includeToListAsync) await include?.Invoke(ret);
|
foreach (var include in _includeToListAsync) await include?.Invoke(ret);
|
||||||
@ -1328,7 +1328,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
var sql = this.InternalToSql<int>(select);
|
var sql = this.InternalToSql<int>(select);
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
DataTable ret = null;
|
DataTable ret = null;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -1343,7 +1343,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -150,35 +150,55 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
if (_transaction == null)
|
if (_transaction == null)
|
||||||
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
||||||
|
|
||||||
if (_transaction != null || _batchAutoTransaction == false)
|
var before = new Aop.TraceBeforeEventArgs("SplitExecuteAffrows", null);
|
||||||
|
_orm.Aop.TraceBeforeHandler?.Invoke(this, before);
|
||||||
|
Exception exception = null;
|
||||||
|
try
|
||||||
{
|
{
|
||||||
for (var a = 0; a < ss.Length; a++)
|
if (_transaction != null || _batchAutoTransaction == false)
|
||||||
{
|
{
|
||||||
_source = ss[a];
|
for (var a = 0; a < ss.Length; a++)
|
||||||
ret += this.RawExecuteAffrows();
|
{
|
||||||
|
_source = ss[a];
|
||||||
|
ret += this.RawExecuteAffrows();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
using (var conn = _orm.Ado.MasterPool.Get())
|
||||||
|
{
|
||||||
|
_transaction = conn.Value.BeginTransaction();
|
||||||
|
var transBefore = new Aop.TraceBeforeEventArgs("BeginTransaction", null);
|
||||||
|
_orm.Aop.TraceBeforeHandler?.Invoke(this, transBefore);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
for (var a = 0; a < ss.Length; a++)
|
||||||
|
{
|
||||||
|
_source = ss[a];
|
||||||
|
ret += this.RawExecuteAffrows();
|
||||||
|
}
|
||||||
|
_transaction.Commit();
|
||||||
|
_orm.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(transBefore, "提交", null));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_transaction.Rollback();
|
||||||
|
_orm.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(transBefore, "回滚", ex));
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
_transaction = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
using (var conn = _orm.Ado.MasterPool.Get())
|
exception = ex;
|
||||||
{
|
throw ex;
|
||||||
_transaction = conn.Value.BeginTransaction();
|
}
|
||||||
try
|
finally
|
||||||
{
|
{
|
||||||
for (var a = 0; a < ss.Length; a++)
|
var after = new Aop.TraceAfterEventArgs(before, null, exception);
|
||||||
{
|
_orm.Aop.TraceAfterHandler?.Invoke(this, after);
|
||||||
_source = ss[a];
|
|
||||||
ret += this.RawExecuteAffrows();
|
|
||||||
}
|
|
||||||
_transaction.Commit();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
_transaction.Rollback();
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
_transaction = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ClearData();
|
ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
@ -197,35 +217,55 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
if (_transaction == null)
|
if (_transaction == null)
|
||||||
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
||||||
|
|
||||||
if (_transaction != null || _batchAutoTransaction == false)
|
var before = new Aop.TraceBeforeEventArgs("SplitExecuteUpdated", null);
|
||||||
|
_orm.Aop.TraceBeforeHandler?.Invoke(this, before);
|
||||||
|
Exception exception = null;
|
||||||
|
try
|
||||||
{
|
{
|
||||||
for (var a = 0; a < ss.Length; a++)
|
if (_transaction != null || _batchAutoTransaction == false)
|
||||||
{
|
{
|
||||||
_source = ss[a];
|
for (var a = 0; a < ss.Length; a++)
|
||||||
ret.AddRange(this.RawExecuteUpdated());
|
{
|
||||||
|
_source = ss[a];
|
||||||
|
ret.AddRange(this.RawExecuteUpdated());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
using (var conn = _orm.Ado.MasterPool.Get())
|
||||||
|
{
|
||||||
|
_transaction = conn.Value.BeginTransaction();
|
||||||
|
var transBefore = new Aop.TraceBeforeEventArgs("BeginTransaction", null);
|
||||||
|
_orm.Aop.TraceBeforeHandler?.Invoke(this, transBefore);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
for (var a = 0; a < ss.Length; a++)
|
||||||
|
{
|
||||||
|
_source = ss[a];
|
||||||
|
ret.AddRange(this.RawExecuteUpdated());
|
||||||
|
}
|
||||||
|
_transaction.Commit();
|
||||||
|
_orm.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(transBefore, "提交", null));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_transaction.Rollback();
|
||||||
|
_orm.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(transBefore, "回滚", ex));
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
_transaction = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
using (var conn = _orm.Ado.MasterPool.Get())
|
exception = ex;
|
||||||
{
|
throw ex;
|
||||||
_transaction = conn.Value.BeginTransaction();
|
}
|
||||||
try
|
finally
|
||||||
{
|
{
|
||||||
for (var a = 0; a < ss.Length; a++)
|
var after = new Aop.TraceAfterEventArgs(before, null, exception);
|
||||||
{
|
_orm.Aop.TraceAfterHandler?.Invoke(this, after);
|
||||||
_source = ss[a];
|
|
||||||
ret.AddRange(this.RawExecuteUpdated());
|
|
||||||
}
|
|
||||||
_transaction.Commit();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
_transaction.Rollback();
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
_transaction = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ClearData();
|
ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
@ -238,7 +278,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
if (string.IsNullOrEmpty(sql)) return 0;
|
if (string.IsNullOrEmpty(sql)) return 0;
|
||||||
var dbParms = _params.Concat(_paramsSource).ToArray();
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var affrows = 0;
|
var affrows = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -254,7 +294,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
|
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
@ -289,7 +329,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
public static void AuditDataValue(object sender, IEnumerable<T1> data, IFreeSql orm, TableInfo table, Dictionary<string, bool> changedDict)
|
public static void AuditDataValue(object sender, IEnumerable<T1> data, IFreeSql orm, TableInfo table, Dictionary<string, bool> changedDict)
|
||||||
{
|
{
|
||||||
if (data?.Any() != true) return;
|
if (data?.Any() != true) return;
|
||||||
if (orm.Aop.AuditValue == null) return;
|
if (orm.Aop.AuditValueHandler == null) return;
|
||||||
foreach (var d in data)
|
foreach (var d in data)
|
||||||
{
|
{
|
||||||
if (d == null) continue;
|
if (d == null) continue;
|
||||||
@ -297,7 +337,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
{
|
{
|
||||||
object val = col.GetMapValue(d);
|
object val = col.GetMapValue(d);
|
||||||
var auditArgs = new Aop.AuditValueEventArgs(Aop.AuditValueType.Update, col, table.Properties[col.CsName], val);
|
var auditArgs = new Aop.AuditValueEventArgs(Aop.AuditValueType.Update, col, table.Properties[col.CsName], val);
|
||||||
orm.Aop.AuditValue(sender, auditArgs);
|
orm.Aop.AuditValueHandler(sender, auditArgs);
|
||||||
if (auditArgs.IsChanged)
|
if (auditArgs.IsChanged)
|
||||||
{
|
{
|
||||||
col.SetMapValue(d, val = auditArgs.Value);
|
col.SetMapValue(d, val = auditArgs.Value);
|
||||||
@ -309,13 +349,13 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
}
|
}
|
||||||
public static void AuditDataValue(object sender, T1 data, IFreeSql orm, TableInfo table, Dictionary<string, bool> changedDict)
|
public static void AuditDataValue(object sender, T1 data, IFreeSql orm, TableInfo table, Dictionary<string, bool> changedDict)
|
||||||
{
|
{
|
||||||
if (orm.Aop.AuditValue == null) return;
|
if (orm.Aop.AuditValueHandler == null) return;
|
||||||
if (data == null) return;
|
if (data == null) return;
|
||||||
foreach (var col in table.Columns.Values)
|
foreach (var col in table.Columns.Values)
|
||||||
{
|
{
|
||||||
object val = col.GetMapValue(data);
|
object val = col.GetMapValue(data);
|
||||||
var auditArgs = new Aop.AuditValueEventArgs(Aop.AuditValueType.Update, col, table.Properties[col.CsName], val);
|
var auditArgs = new Aop.AuditValueEventArgs(Aop.AuditValueType.Update, col, table.Properties[col.CsName], val);
|
||||||
orm.Aop.AuditValue(sender, auditArgs);
|
orm.Aop.AuditValueHandler(sender, auditArgs);
|
||||||
if (auditArgs.IsChanged)
|
if (auditArgs.IsChanged)
|
||||||
{
|
{
|
||||||
col.SetMapValue(data, val = auditArgs.Value);
|
col.SetMapValue(data, val = auditArgs.Value);
|
||||||
@ -605,7 +645,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
else if (_source.Count > 1)
|
else if (_source.Count > 1)
|
||||||
{ //批量保存 Source
|
{ //批量保存 Source
|
||||||
if (_table.Primarys.Any() == false) return null;
|
if (_table.Primarys.Any() == false) return null;
|
||||||
|
|
||||||
var caseWhen = new StringBuilder();
|
var caseWhen = new StringBuilder();
|
||||||
caseWhen.Append("CASE ");
|
caseWhen.Append("CASE ");
|
||||||
ToSqlCase(caseWhen, _table.Primarys);
|
ToSqlCase(caseWhen, _table.Primarys);
|
||||||
@ -698,4 +738,4 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -30,35 +30,55 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
if (_transaction == null)
|
if (_transaction == null)
|
||||||
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
||||||
|
|
||||||
if (_transaction != null)
|
var before = new Aop.TraceBeforeEventArgs("SplitExecuteAffrowsAsync", null);
|
||||||
|
_orm.Aop.TraceBeforeHandler?.Invoke(this, before);
|
||||||
|
Exception exception = null;
|
||||||
|
try
|
||||||
{
|
{
|
||||||
for (var a = 0; a < ss.Length; a++)
|
if (_transaction != null || _batchAutoTransaction == false)
|
||||||
{
|
{
|
||||||
_source = ss[a];
|
for (var a = 0; a < ss.Length; a++)
|
||||||
ret += await this.RawExecuteAffrowsAsync();
|
{
|
||||||
|
_source = ss[a];
|
||||||
|
ret += await this.RawExecuteAffrowsAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
using (var conn = await _orm.Ado.MasterPool.GetAsync())
|
||||||
|
{
|
||||||
|
_transaction = conn.Value.BeginTransaction();
|
||||||
|
var transBefore = new Aop.TraceBeforeEventArgs("BeginTransaction", null);
|
||||||
|
_orm.Aop.TraceBeforeHandler?.Invoke(this, transBefore);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
for (var a = 0; a < ss.Length; a++)
|
||||||
|
{
|
||||||
|
_source = ss[a];
|
||||||
|
ret += await this.RawExecuteAffrowsAsync();
|
||||||
|
}
|
||||||
|
_transaction.Commit();
|
||||||
|
_orm.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(transBefore, "提交", null));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_transaction.Rollback();
|
||||||
|
_orm.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(transBefore, "回滚", ex));
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
_transaction = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
using (var conn = await _orm.Ado.MasterPool.GetAsync())
|
exception = ex;
|
||||||
{
|
throw ex;
|
||||||
_transaction = conn.Value.BeginTransaction();
|
}
|
||||||
try
|
finally
|
||||||
{
|
{
|
||||||
for (var a = 0; a < ss.Length; a++)
|
var after = new Aop.TraceAfterEventArgs(before, null, exception);
|
||||||
{
|
_orm.Aop.TraceAfterHandler?.Invoke(this, after);
|
||||||
_source = ss[a];
|
|
||||||
ret += await this.RawExecuteAffrowsAsync();
|
|
||||||
}
|
|
||||||
_transaction.Commit();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
_transaction.Rollback();
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
_transaction = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ClearData();
|
ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
@ -76,35 +96,55 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
if (_transaction == null)
|
if (_transaction == null)
|
||||||
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
this.WithTransaction(_orm.Ado.TransactionCurrentThread);
|
||||||
|
|
||||||
if (_transaction != null)
|
var before = new Aop.TraceBeforeEventArgs("SplitExecuteUpdatedAsync", null);
|
||||||
|
_orm.Aop.TraceBeforeHandler?.Invoke(this, before);
|
||||||
|
Exception exception = null;
|
||||||
|
try
|
||||||
{
|
{
|
||||||
for (var a = 0; a < ss.Length; a++)
|
if (_transaction != null || _batchAutoTransaction == false)
|
||||||
{
|
{
|
||||||
_source = ss[a];
|
for (var a = 0; a < ss.Length; a++)
|
||||||
ret.AddRange(await this.RawExecuteUpdatedAsync());
|
{
|
||||||
|
_source = ss[a];
|
||||||
|
ret.AddRange(await this.RawExecuteUpdatedAsync());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
using (var conn = await _orm.Ado.MasterPool.GetAsync())
|
||||||
|
{
|
||||||
|
_transaction = conn.Value.BeginTransaction();
|
||||||
|
var transBefore = new Aop.TraceBeforeEventArgs("BeginTransaction", null);
|
||||||
|
_orm.Aop.TraceBeforeHandler?.Invoke(this, transBefore);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
for (var a = 0; a < ss.Length; a++)
|
||||||
|
{
|
||||||
|
_source = ss[a];
|
||||||
|
ret.AddRange(await this.RawExecuteUpdatedAsync());
|
||||||
|
}
|
||||||
|
_transaction.Commit();
|
||||||
|
_orm.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(transBefore, "提交", null));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_transaction.Rollback();
|
||||||
|
_orm.Aop.TraceAfterHandler?.Invoke(this, new Aop.TraceAfterEventArgs(transBefore, "回滚", ex));
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
_transaction = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
using (var conn = await _orm.Ado.MasterPool.GetAsync())
|
exception = ex;
|
||||||
{
|
throw ex;
|
||||||
_transaction = conn.Value.BeginTransaction();
|
}
|
||||||
try
|
finally
|
||||||
{
|
{
|
||||||
for (var a = 0; a < ss.Length; a++)
|
var after = new Aop.TraceAfterEventArgs(before, null, exception);
|
||||||
{
|
_orm.Aop.TraceAfterHandler?.Invoke(this, after);
|
||||||
_source = ss[a];
|
|
||||||
ret.AddRange(await this.RawExecuteUpdatedAsync());
|
|
||||||
}
|
|
||||||
_transaction.Commit();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
_transaction.Rollback();
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
_transaction = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ClearData();
|
ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
@ -116,7 +156,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
if (string.IsNullOrEmpty(sql)) return 0;
|
if (string.IsNullOrEmpty(sql)) return 0;
|
||||||
var dbParms = _params.Concat(_paramsSource).ToArray();
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var affrows = 0;
|
var affrows = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -132,7 +172,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
|
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
@ -142,4 +182,4 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
public abstract Task<List<T1>> ExecuteUpdatedAsync();
|
public abstract Task<List<T1>> ExecuteUpdatedAsync();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -100,10 +100,10 @@ namespace FreeSql.Internal
|
|||||||
public TableAttribute GetEntityTableAttribute(Type type)
|
public TableAttribute GetEntityTableAttribute(Type type)
|
||||||
{
|
{
|
||||||
TableAttribute attr = null;
|
TableAttribute attr = null;
|
||||||
if (_orm.Aop.ConfigEntity != null)
|
if (_orm.Aop.ConfigEntityHandler != null)
|
||||||
{
|
{
|
||||||
var aope = new Aop.ConfigEntityEventArgs(type);
|
var aope = new Aop.ConfigEntityEventArgs(type);
|
||||||
_orm.Aop.ConfigEntity(_orm, aope);
|
_orm.Aop.ConfigEntityHandler(_orm, aope);
|
||||||
attr = aope.ModifyResult;
|
attr = aope.ModifyResult;
|
||||||
}
|
}
|
||||||
if (attr == null) attr = new TableAttribute();
|
if (attr == null) attr = new TableAttribute();
|
||||||
@ -130,10 +130,10 @@ namespace FreeSql.Internal
|
|||||||
public ColumnAttribute GetEntityColumnAttribute(Type type, PropertyInfo proto)
|
public ColumnAttribute GetEntityColumnAttribute(Type type, PropertyInfo proto)
|
||||||
{
|
{
|
||||||
ColumnAttribute attr = null;
|
ColumnAttribute attr = null;
|
||||||
if (_orm.Aop.ConfigEntityProperty != null)
|
if (_orm.Aop.ConfigEntityPropertyHandler != null)
|
||||||
{
|
{
|
||||||
var aope = new Aop.ConfigEntityPropertyEventArgs(type, proto);
|
var aope = new Aop.ConfigEntityPropertyEventArgs(type, proto);
|
||||||
_orm.Aop.ConfigEntityProperty(_orm, aope);
|
_orm.Aop.ConfigEntityPropertyHandler(_orm, aope);
|
||||||
attr = aope.ModifyResult;
|
attr = aope.ModifyResult;
|
||||||
}
|
}
|
||||||
if (attr == null) attr = new ColumnAttribute();
|
if (attr == null) attr = new ColumnAttribute();
|
||||||
@ -219,10 +219,10 @@ namespace FreeSql.Internal
|
|||||||
public IndexAttribute[] GetEntityIndexAttribute(Type type)
|
public IndexAttribute[] GetEntityIndexAttribute(Type type)
|
||||||
{
|
{
|
||||||
var ret = new Dictionary<string, IndexAttribute>();
|
var ret = new Dictionary<string, IndexAttribute>();
|
||||||
if (_orm.Aop.ConfigEntity != null)
|
if (_orm.Aop.ConfigEntityHandler != null)
|
||||||
{
|
{
|
||||||
var aope = new Aop.ConfigEntityEventArgs(type);
|
var aope = new Aop.ConfigEntityEventArgs(type);
|
||||||
_orm.Aop.ConfigEntity(_orm, aope);
|
_orm.Aop.ConfigEntityHandler(_orm, aope);
|
||||||
foreach (var idxattr in aope.ModifyIndexResult)
|
foreach (var idxattr in aope.ModifyIndexResult)
|
||||||
if (!string.IsNullOrEmpty(idxattr.Name) && !string.IsNullOrEmpty(idxattr.Fields))
|
if (!string.IsNullOrEmpty(idxattr.Name) && !string.IsNullOrEmpty(idxattr.Fields))
|
||||||
{
|
{
|
||||||
|
@ -31,7 +31,7 @@ namespace FreeSql.MsAccess.Curd
|
|||||||
{
|
{
|
||||||
var sql = this.ToSql();
|
var sql = this.ToSql();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var affrows = 0;
|
var affrows = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -46,7 +46,7 @@ namespace FreeSql.MsAccess.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
|
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
@ -56,7 +56,7 @@ namespace FreeSql.MsAccess.Curd
|
|||||||
if (string.IsNullOrEmpty(sql)) return 0;
|
if (string.IsNullOrEmpty(sql)) return 0;
|
||||||
|
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, string.Concat(sql, "; SELECT @@identity;"), _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, string.Concat(sql, "; SELECT @@identity;"), _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
long ret = 0;
|
long ret = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
var isUseConnection = _connection != null;
|
var isUseConnection = _connection != null;
|
||||||
@ -86,7 +86,7 @@ namespace FreeSql.MsAccess.Curd
|
|||||||
{
|
{
|
||||||
if (isUseConnection == false) _connection = null;
|
if (isUseConnection == false) _connection = null;
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -110,7 +110,7 @@ namespace FreeSql.MsAccess.Curd
|
|||||||
{
|
{
|
||||||
var sql = this.ToSql();
|
var sql = this.ToSql();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var affrows = 0;
|
var affrows = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -125,7 +125,7 @@ namespace FreeSql.MsAccess.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
|
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
@ -135,7 +135,7 @@ namespace FreeSql.MsAccess.Curd
|
|||||||
if (string.IsNullOrEmpty(sql)) return 0;
|
if (string.IsNullOrEmpty(sql)) return 0;
|
||||||
|
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, string.Concat(sql, "; SELECT @@identity;"), _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, string.Concat(sql, "; SELECT @@identity;"), _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
long ret = 0;
|
long ret = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
var isUseConnection = _connection != null;
|
var isUseConnection = _connection != null;
|
||||||
@ -165,7 +165,7 @@ namespace FreeSql.MsAccess.Curd
|
|||||||
{
|
{
|
||||||
if (isUseConnection == false) _connection = null;
|
if (isUseConnection == false) _connection = null;
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -48,7 +48,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
@ -74,7 +74,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -89,7 +89,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -48,7 +48,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
|
|
||||||
sql = string.Concat(sql, "; SELECT LAST_INSERT_ID();");
|
sql = string.Concat(sql, "; SELECT LAST_INSERT_ID();");
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
long ret = 0;
|
long ret = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -63,7 +63,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -84,7 +84,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
}
|
}
|
||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -99,7 +99,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -117,7 +117,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
|
|
||||||
sql = string.Concat(sql, "; SELECT LAST_INSERT_ID();");
|
sql = string.Concat(sql, "; SELECT LAST_INSERT_ID();");
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
long ret = 0;
|
long ret = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -132,7 +132,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -153,7 +153,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
}
|
}
|
||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -168,7 +168,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.Concat(_paramsSource).ToArray();
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -62,7 +62,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -127,7 +127,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.Concat(_paramsSource).ToArray();
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -143,7 +143,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -117,7 +117,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
if (string.IsNullOrEmpty(sql)) return 0;
|
if (string.IsNullOrEmpty(sql)) return 0;
|
||||||
|
|
||||||
var before = new CurdBeforeEventArgs(_mysqlInsert.InternalTable.Type, _mysqlInsert.InternalTable, CurdType.Insert, sql, _mysqlInsert.InternalParams);
|
var before = new CurdBeforeEventArgs(_mysqlInsert.InternalTable.Type, _mysqlInsert.InternalTable, CurdType.Insert, sql, _mysqlInsert.InternalParams);
|
||||||
_mysqlInsert.InternalOrm.Aop.CurdBefore?.Invoke(_mysqlInsert, before);
|
_mysqlInsert.InternalOrm.Aop.CurdBeforeHandler?.Invoke(_mysqlInsert, before);
|
||||||
long ret = 0;
|
long ret = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -132,7 +132,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new CurdAfterEventArgs(before, exception, ret);
|
var after = new CurdAfterEventArgs(before, exception, ret);
|
||||||
_mysqlInsert.InternalOrm.Aop.CurdAfter?.Invoke(_mysqlInsert, after);
|
_mysqlInsert.InternalOrm.Aop.CurdAfterHandler?.Invoke(_mysqlInsert, after);
|
||||||
ClearData();
|
ClearData();
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@ -146,7 +146,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
if (string.IsNullOrEmpty(sql)) return 0;
|
if (string.IsNullOrEmpty(sql)) return 0;
|
||||||
|
|
||||||
var before = new CurdBeforeEventArgs(_mysqlInsert.InternalTable.Type, _mysqlInsert.InternalTable, CurdType.Insert, sql, _mysqlInsert.InternalParams);
|
var before = new CurdBeforeEventArgs(_mysqlInsert.InternalTable.Type, _mysqlInsert.InternalTable, CurdType.Insert, sql, _mysqlInsert.InternalParams);
|
||||||
_mysqlInsert.InternalOrm.Aop.CurdBefore?.Invoke(_mysqlInsert, before);
|
_mysqlInsert.InternalOrm.Aop.CurdBeforeHandler?.Invoke(_mysqlInsert, before);
|
||||||
long ret = 0;
|
long ret = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -161,7 +161,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new CurdAfterEventArgs(before, exception, ret);
|
var after = new CurdAfterEventArgs(before, exception, ret);
|
||||||
_mysqlInsert.InternalOrm.Aop.CurdAfter?.Invoke(_mysqlInsert, after);
|
_mysqlInsert.InternalOrm.Aop.CurdAfterHandler?.Invoke(_mysqlInsert, after);
|
||||||
ClearData();
|
ClearData();
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -97,7 +97,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
if (_identCol == null || _source.Count > 1)
|
if (_identCol == null || _source.Count > 1)
|
||||||
{
|
{
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ret = _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params);
|
ret = _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
@ -110,7 +110,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -120,7 +120,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
sql = $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}";
|
sql = $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}";
|
||||||
var dbParms = _params.Concat(new[] { identParam }).ToArray();
|
var dbParms = _params.Concat(new[] { identParam }).ToArray();
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, dbParms);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, dbParms);
|
_orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
@ -134,7 +134,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -167,7 +167,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
if (_identCol == null || _source.Count > 1)
|
if (_identCol == null || _source.Count > 1)
|
||||||
{
|
{
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ret = await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params);
|
ret = await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
@ -180,7 +180,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -190,7 +190,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
sql = $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}";
|
sql = $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}";
|
||||||
var dbParms = _params.Concat(new[] { identParam }).ToArray();
|
var dbParms = _params.Concat(new[] { identParam }).ToArray();
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, dbParms);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, dbParms);
|
await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
@ -204,7 +204,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -30,7 +30,7 @@ namespace FreeSql.Odbc.Default
|
|||||||
|
|
||||||
Object<DbConnection> poolConn = null;
|
Object<DbConnection> poolConn = null;
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, string.Concat(sql, $"; {_utils.Adapter.InsertAfterGetIdentitySql}"), _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, string.Concat(sql, $"; {_utils.Adapter.InsertAfterGetIdentitySql}"), _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
long ret = 0;
|
long ret = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -56,7 +56,7 @@ namespace FreeSql.Odbc.Default
|
|||||||
_orm.Ado.MasterPool.Return(poolConn);
|
_orm.Ado.MasterPool.Return(poolConn);
|
||||||
|
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -76,7 +76,7 @@ namespace FreeSql.Odbc.Default
|
|||||||
|
|
||||||
Object<DbConnection> poolConn = null;
|
Object<DbConnection> poolConn = null;
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, string.Concat(sql, $"; {_utils.Adapter.InsertAfterGetIdentitySql}"), _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, string.Concat(sql, $"; {_utils.Adapter.InsertAfterGetIdentitySql}"), _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
long ret = 0;
|
long ret = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -102,7 +102,7 @@ namespace FreeSql.Odbc.Default
|
|||||||
_orm.Ado.MasterPool.Return(poolConn);
|
_orm.Ado.MasterPool.Return(poolConn);
|
||||||
|
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,7 @@ namespace FreeSql.Odbc.GBase
|
|||||||
if (identCols.Any() == false)
|
if (identCols.Any() == false)
|
||||||
{
|
{
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ret = _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params);
|
ret = _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
@ -46,13 +46,13 @@ namespace FreeSql.Odbc.GBase
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
sql = string.Concat(sql, " RETURNING ", _commonUtils.QuoteSqlName(identCols.First().Value.Attribute.Name));
|
sql = string.Concat(sql, " RETURNING ", _commonUtils.QuoteSqlName(identCols.First().Value.Attribute.Name));
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_connection, _transaction, CommandType.Text, sql, _params)), out ret);
|
long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_connection, _transaction, CommandType.Text, sql, _params)), out ret);
|
||||||
@ -65,7 +65,7 @@ namespace FreeSql.Odbc.GBase
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -99,7 +99,7 @@ namespace FreeSql.Odbc.GBase
|
|||||||
if (identCols.Any() == false)
|
if (identCols.Any() == false)
|
||||||
{
|
{
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ret = await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params);
|
ret = await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
@ -112,13 +112,13 @@ namespace FreeSql.Odbc.GBase
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
sql = string.Concat(sql, " RETURNING ", _commonUtils.QuoteSqlName(identCols.First().Value.Attribute.Name));
|
sql = string.Concat(sql, " RETURNING ", _commonUtils.QuoteSqlName(identCols.First().Value.Attribute.Name));
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_connection, _transaction, CommandType.Text, sql, _params)), out ret);
|
long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_connection, _transaction, CommandType.Text, sql, _params)), out ret);
|
||||||
@ -131,7 +131,7 @@ namespace FreeSql.Odbc.GBase
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -48,7 +48,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
@ -74,7 +74,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -89,7 +89,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -29,7 +29,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
|
|
||||||
Object<DbConnection> poolConn = null;
|
Object<DbConnection> poolConn = null;
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, string.Concat(sql, "; SELECT LAST_INSERT_ID();"), _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, string.Concat(sql, "; SELECT LAST_INSERT_ID();"), _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
long ret = 0;
|
long ret = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -55,7 +55,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
_orm.Ado.MasterPool.Return(poolConn);
|
_orm.Ado.MasterPool.Return(poolConn);
|
||||||
|
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -76,7 +76,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
}
|
}
|
||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -91,7 +91,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -109,7 +109,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
|
|
||||||
Object<DbConnection> poolConn = null;
|
Object<DbConnection> poolConn = null;
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, string.Concat(sql, "; SELECT LAST_INSERT_ID();"), _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, string.Concat(sql, "; SELECT LAST_INSERT_ID();"), _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
long ret = 0;
|
long ret = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -135,7 +135,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
_orm.Ado.MasterPool.Return(poolConn);
|
_orm.Ado.MasterPool.Return(poolConn);
|
||||||
|
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -156,7 +156,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
}
|
}
|
||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -171,7 +171,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.Concat(_paramsSource).ToArray();
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -56,7 +56,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -121,7 +121,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.Concat(_paramsSource).ToArray();
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -137,7 +137,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -97,7 +97,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
if (_identCol == null || _source.Count > 1)
|
if (_identCol == null || _source.Count > 1)
|
||||||
{
|
{
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ret = _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params);
|
ret = _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
@ -110,7 +110,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -120,7 +120,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
sql = $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}";
|
sql = $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}";
|
||||||
var dbParms = _params.Concat(new[] { identParam }).ToArray();
|
var dbParms = _params.Concat(new[] { identParam }).ToArray();
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, dbParms);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, dbParms);
|
_orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
@ -134,7 +134,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -167,7 +167,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
if (_identCol == null || _source.Count > 1)
|
if (_identCol == null || _source.Count > 1)
|
||||||
{
|
{
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ret = await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params);
|
ret = await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
@ -180,7 +180,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -190,7 +190,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
sql = $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}";
|
sql = $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}";
|
||||||
var dbParms = _params.Concat(new[] { identParam }).ToArray();
|
var dbParms = _params.Concat(new[] { identParam }).ToArray();
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, dbParms);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, dbParms);
|
await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
@ -204,7 +204,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -48,7 +48,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
@ -74,7 +74,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -89,7 +89,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -33,7 +33,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
if (identCols.Any() == false)
|
if (identCols.Any() == false)
|
||||||
{
|
{
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ret = _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params);
|
ret = _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
@ -46,13 +46,13 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
sql = string.Concat(sql, " RETURNING ", _commonUtils.QuoteSqlName(identCols.First().Value.Attribute.Name));
|
sql = string.Concat(sql, " RETURNING ", _commonUtils.QuoteSqlName(identCols.First().Value.Attribute.Name));
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_connection, _transaction, CommandType.Text, sql, _params)), out ret);
|
long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_connection, _transaction, CommandType.Text, sql, _params)), out ret);
|
||||||
@ -65,7 +65,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -87,7 +87,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
}
|
}
|
||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -102,7 +102,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -126,7 +126,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
if (identCols.Any() == false)
|
if (identCols.Any() == false)
|
||||||
{
|
{
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ret = await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params);
|
ret = await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
@ -139,13 +139,13 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
sql = string.Concat(sql, " RETURNING ", _commonUtils.QuoteSqlName(identCols.First().Value.Attribute.Name));
|
sql = string.Concat(sql, " RETURNING ", _commonUtils.QuoteSqlName(identCols.First().Value.Attribute.Name));
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_connection, _transaction, CommandType.Text, sql, _params)), out ret);
|
long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_connection, _transaction, CommandType.Text, sql, _params)), out ret);
|
||||||
@ -158,7 +158,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -179,7 +179,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
}
|
}
|
||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -194,7 +194,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.Concat(_paramsSource).ToArray();
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -55,7 +55,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -129,7 +129,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.Concat(_paramsSource).ToArray();
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -145,7 +145,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -53,7 +53,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
@ -84,7 +84,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -99,7 +99,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -26,7 +26,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
var versionGreaterThan10 = (_commonUtils as OdbcSqlServerUtils).ServerVersion > 10;
|
var versionGreaterThan10 = (_commonUtils as OdbcSqlServerUtils).ServerVersion > 10;
|
||||||
var sql = versionGreaterThan10 ? this.ToSql() : this.ToSqlValuesOrSelectUnionAll(false);
|
var sql = versionGreaterThan10 ? this.ToSql() : this.ToSqlValuesOrSelectUnionAll(false);
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var affrows = 0;
|
var affrows = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -41,7 +41,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
|
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
@ -53,7 +53,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
|
|
||||||
sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();");
|
sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();");
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
long ret = 0;
|
long ret = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -68,7 +68,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -105,7 +105,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
|
|
||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -120,7 +120,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -136,7 +136,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
var versionGreaterThan10 = (_commonUtils as OdbcSqlServerUtils).ServerVersion > 10;
|
var versionGreaterThan10 = (_commonUtils as OdbcSqlServerUtils).ServerVersion > 10;
|
||||||
var sql = versionGreaterThan10 ? this.ToSql() : this.ToSqlValuesOrSelectUnionAll(false);
|
var sql = versionGreaterThan10 ? this.ToSql() : this.ToSqlValuesOrSelectUnionAll(false);
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var affrows = 0;
|
var affrows = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -151,7 +151,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
|
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
@ -163,7 +163,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
|
|
||||||
sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();");
|
sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();");
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
long ret = 0;
|
long ret = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -178,7 +178,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -215,7 +215,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
|
|
||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -230,7 +230,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.Concat(_paramsSource).ToArray();
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -60,7 +60,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -128,7 +128,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.Concat(_paramsSource).ToArray();
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -144,7 +144,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -99,7 +99,7 @@ namespace FreeSql.Oracle.Curd
|
|||||||
if (_identCol == null || _source.Count > 1)
|
if (_identCol == null || _source.Count > 1)
|
||||||
{
|
{
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ret = _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params);
|
ret = _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
@ -112,7 +112,7 @@ namespace FreeSql.Oracle.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -122,7 +122,7 @@ namespace FreeSql.Oracle.Curd
|
|||||||
sql = $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}";
|
sql = $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}";
|
||||||
var dbParms = _params.Concat(new[] { identParam }).ToArray();
|
var dbParms = _params.Concat(new[] { identParam }).ToArray();
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, dbParms);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, dbParms);
|
_orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
@ -136,7 +136,7 @@ namespace FreeSql.Oracle.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -168,7 +168,7 @@ namespace FreeSql.Oracle.Curd
|
|||||||
if (_identCol == null || _source.Count > 1)
|
if (_identCol == null || _source.Count > 1)
|
||||||
{
|
{
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ret = await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params);
|
ret = await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
@ -181,7 +181,7 @@ namespace FreeSql.Oracle.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -191,7 +191,7 @@ namespace FreeSql.Oracle.Curd
|
|||||||
sql = $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}";
|
sql = $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}";
|
||||||
var dbParms = _params.Concat(new[] { identParam }).ToArray();
|
var dbParms = _params.Concat(new[] { identParam }).ToArray();
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, dbParms);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, dbParms);
|
await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, dbParms);
|
||||||
@ -205,7 +205,7 @@ namespace FreeSql.Oracle.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -156,7 +156,7 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
if (string.IsNullOrEmpty(sql)) return 0;
|
if (string.IsNullOrEmpty(sql)) return 0;
|
||||||
|
|
||||||
var before = new CurdBeforeEventArgs(_pgsqlInsert.InternalTable.Type, _pgsqlInsert.InternalTable, CurdType.Insert, sql, _pgsqlInsert.InternalParams);
|
var before = new CurdBeforeEventArgs(_pgsqlInsert.InternalTable.Type, _pgsqlInsert.InternalTable, CurdType.Insert, sql, _pgsqlInsert.InternalParams);
|
||||||
_pgsqlInsert.InternalOrm.Aop.CurdBefore?.Invoke(_pgsqlInsert, before);
|
_pgsqlInsert.InternalOrm.Aop.CurdBeforeHandler?.Invoke(_pgsqlInsert, before);
|
||||||
long ret = 0;
|
long ret = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -171,7 +171,7 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new CurdAfterEventArgs(before, exception, ret);
|
var after = new CurdAfterEventArgs(before, exception, ret);
|
||||||
_pgsqlInsert.InternalOrm.Aop.CurdAfter?.Invoke(_pgsqlInsert, after);
|
_pgsqlInsert.InternalOrm.Aop.CurdAfterHandler?.Invoke(_pgsqlInsert, after);
|
||||||
ClearData();
|
ClearData();
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@ -185,7 +185,7 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
if (string.IsNullOrEmpty(sql)) return 0;
|
if (string.IsNullOrEmpty(sql)) return 0;
|
||||||
|
|
||||||
var before = new CurdBeforeEventArgs(_pgsqlInsert.InternalTable.Type, _pgsqlInsert.InternalTable, CurdType.Insert, sql, _pgsqlInsert.InternalParams);
|
var before = new CurdBeforeEventArgs(_pgsqlInsert.InternalTable.Type, _pgsqlInsert.InternalTable, CurdType.Insert, sql, _pgsqlInsert.InternalParams);
|
||||||
_pgsqlInsert.InternalOrm.Aop.CurdBefore?.Invoke(_pgsqlInsert, before);
|
_pgsqlInsert.InternalOrm.Aop.CurdBeforeHandler?.Invoke(_pgsqlInsert, before);
|
||||||
long ret = 0;
|
long ret = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -200,7 +200,7 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new CurdAfterEventArgs(before, exception, ret);
|
var after = new CurdAfterEventArgs(before, exception, ret);
|
||||||
_pgsqlInsert.InternalOrm.Aop.CurdAfter?.Invoke(_pgsqlInsert, after);
|
_pgsqlInsert.InternalOrm.Aop.CurdAfterHandler?.Invoke(_pgsqlInsert, after);
|
||||||
ClearData();
|
ClearData();
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -33,7 +33,7 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -48,7 +48,7 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
@ -74,7 +74,7 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -89,7 +89,7 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -46,7 +46,7 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
if (identCols.Any() == false)
|
if (identCols.Any() == false)
|
||||||
{
|
{
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ret = _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params);
|
ret = _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
@ -59,13 +59,13 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
sql = string.Concat(sql, " RETURNING ", _commonUtils.QuoteSqlName(identCols.First().Value.Attribute.Name));
|
sql = string.Concat(sql, " RETURNING ", _commonUtils.QuoteSqlName(identCols.First().Value.Attribute.Name));
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_connection, _transaction, CommandType.Text, sql, _params)), out ret);
|
long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_connection, _transaction, CommandType.Text, sql, _params)), out ret);
|
||||||
@ -78,7 +78,7 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -100,7 +100,7 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
}
|
}
|
||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -115,7 +115,7 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -139,7 +139,7 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
if (identCols.Any() == false)
|
if (identCols.Any() == false)
|
||||||
{
|
{
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ret = await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params);
|
ret = await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params);
|
||||||
@ -152,13 +152,13 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
sql = string.Concat(sql, " RETURNING ", _commonUtils.QuoteSqlName(identCols.First().Value.Attribute.Name));
|
sql = string.Concat(sql, " RETURNING ", _commonUtils.QuoteSqlName(identCols.First().Value.Attribute.Name));
|
||||||
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_connection, _transaction, CommandType.Text, sql, _params)), out ret);
|
long.TryParse(string.Concat(await _orm.Ado.ExecuteScalarAsync(_connection, _transaction, CommandType.Text, sql, _params)), out ret);
|
||||||
@ -171,7 +171,7 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -192,7 +192,7 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
}
|
}
|
||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -207,7 +207,7 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.Concat(_paramsSource).ToArray();
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -63,7 +63,7 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -139,7 +139,7 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.Concat(_paramsSource).ToArray();
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -155,7 +155,7 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ namespace FreeSql.SqlServer.Curd
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -53,7 +53,7 @@ namespace FreeSql.SqlServer.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
@ -84,7 +84,7 @@ namespace FreeSql.SqlServer.Curd
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.ToArray();
|
var dbParms = _params.ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -99,7 +99,7 @@ namespace FreeSql.SqlServer.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
this.ClearData();
|
this.ClearData();
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -38,7 +38,7 @@ namespace FreeSql.SqlServer.Curd
|
|||||||
|
|
||||||
sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();");
|
sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();");
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
long ret = 0;
|
long ret = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -53,7 +53,7 @@ namespace FreeSql.SqlServer.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -89,7 +89,7 @@ namespace FreeSql.SqlServer.Curd
|
|||||||
|
|
||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -104,7 +104,7 @@ namespace FreeSql.SqlServer.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -122,7 +122,7 @@ namespace FreeSql.SqlServer.Curd
|
|||||||
|
|
||||||
sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();");
|
sql = string.Concat(sql, "; SELECT SCOPE_IDENTITY();");
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
long ret = 0;
|
long ret = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -137,7 +137,7 @@ namespace FreeSql.SqlServer.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -173,7 +173,7 @@ namespace FreeSql.SqlServer.Curd
|
|||||||
|
|
||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -188,7 +188,7 @@ namespace FreeSql.SqlServer.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ namespace FreeSql.SqlServer.Curd
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.Concat(_paramsSource).ToArray();
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -61,7 +61,7 @@ namespace FreeSql.SqlServer.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -129,7 +129,7 @@ namespace FreeSql.SqlServer.Curd
|
|||||||
sql = sb.ToString();
|
sql = sb.ToString();
|
||||||
var dbParms = _params.Concat(_paramsSource).ToArray();
|
var dbParms = _params.Concat(_paramsSource).ToArray();
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
var ret = new List<T1>();
|
var ret = new List<T1>();
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -145,7 +145,7 @@ namespace FreeSql.SqlServer.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ namespace FreeSql.Sqlite.Curd
|
|||||||
|
|
||||||
sql = string.Concat(sql, "; SELECT last_insert_rowid();");
|
sql = string.Concat(sql, "; SELECT last_insert_rowid();");
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
long ret = 0;
|
long ret = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -42,7 +42,7 @@ namespace FreeSql.Sqlite.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -70,7 +70,7 @@ namespace FreeSql.Sqlite.Curd
|
|||||||
|
|
||||||
sql = string.Concat(sql, "; SELECT last_insert_rowid();");
|
sql = string.Concat(sql, "; SELECT last_insert_rowid();");
|
||||||
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, sql, _params);
|
||||||
_orm.Aop.CurdBefore?.Invoke(this, before);
|
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
|
||||||
long ret = 0;
|
long ret = 0;
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
try
|
try
|
||||||
@ -85,7 +85,7 @@ namespace FreeSql.Sqlite.Curd
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
var after = new Aop.CurdAfterEventArgs(before, exception, ret);
|
||||||
_orm.Aop.CurdAfter?.Invoke(this, after);
|
_orm.Aop.CurdAfterHandler?.Invoke(this, after);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user