- 补充 IFreeSql 增加与实现 IDisposable 接口(依然要保持单例的使用习惯);

- 增加 CurdBefore、CurdAfter AOP 方法,可监控执行增删查改;
- 增加 SyncStructureBefore、SyncStructureAfter AOP 方法,可监控CodeFirst迁移;
This commit is contained in:
28810
2019-05-06 21:02:15 +08:00
parent 33e992d96b
commit b921231cb7
26 changed files with 981 additions and 303 deletions

View File

@@ -325,14 +325,38 @@ namespace FreeSql.Internal.CommonProvider {
internal int RawExecuteAffrows() {
var sql = ToSql();
var affrows = _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params);
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, affrows, 0, null));
var before = new Aop.CurdBeforeEventArgs(_table.Type, Aop.CurdType.Insert, sql, _params);
_orm.Aop.CurdBefore?.Invoke(this, before);
var affrows = 0;
Exception exception = null;
try {
affrows = _orm.Ado.ExecuteNonQuery(_connection, _transaction, CommandType.Text, sql, _params);
} catch (Exception ex) {
exception = ex;
throw ex;
} finally {
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
_orm.Aop.CurdAfter?.Invoke(this, after);
}
this.ClearData();
return affrows;
}
async internal Task<int> RawExecuteAffrowsAsync() {
var sql = ToSql();
var affrows = await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params);
_orm.Aop.OnInserted?.Invoke(this, new AopOnInsertedEventArgs(_table.Type, _source, sql, _params, affrows, 0, null));
var before = new Aop.CurdBeforeEventArgs(_table.Type, Aop.CurdType.Insert, sql, _params);
_orm.Aop.CurdBefore?.Invoke(this, before);
var affrows = 0;
Exception exception = null;
try {
affrows = await _orm.Ado.ExecuteNonQueryAsync(_connection, _transaction, CommandType.Text, sql, _params);
} catch (Exception ex) {
exception = ex;
throw ex;
} finally {
var after = new Aop.CurdAfterEventArgs(before, exception, affrows);
_orm.Aop.CurdAfter?.Invoke(this, after);
}
this.ClearData();
return affrows;
}
internal abstract long RawExecuteIdentity();