- 增加 OnInserted、OnUpdated、OnDeleted、OnSelected 等 AOP 方法;

This commit is contained in:
28810
2019-05-05 18:17:04 +08:00
parent e94b78199d
commit 33e992d96b
19 changed files with 376 additions and 61 deletions

View File

@ -2,6 +2,7 @@
using FreeSql.DatabaseModel;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq.Expressions;
using System.Reflection;
@ -31,6 +32,23 @@ namespace FreeSql {
/// 自定义实体的属性配置,方便和多个 ORM 共同使用
/// </summary>
EventHandler<AopConfigEntityPropertyEventArgs> ConfigEntityProperty { get; set; }
/// <summary>
/// IUpdate 执行成功后触发
/// </summary>
EventHandler<AopOnUpdatedEventArgs> OnUpdated { get; set; }
/// <summary>
/// IInsert 执行成功后触发
/// </summary>
EventHandler<AopOnInsertedEventArgs> OnInserted { get; set; }
/// <summary>
/// IDeleted 执行成功后触发
/// </summary>
EventHandler<AopOnDeletedEventArgs> OnDeleted { get; set; }
/// <summary>
/// ISelect 执行成功后触发
/// </summary>
EventHandler<AopOnSelectedEventArgs> OnSelected { get; set; }
}
public class AopToListEventArgs : EventArgs {
@ -107,4 +125,84 @@ namespace FreeSql {
/// </summary>
public ColumnAttribute ModifyResult { get; }
}
public class AopOnUpdatedEventArgs : AopOnDeletedEventArgs {
public AopOnUpdatedEventArgs(Type entityType, object source, string sql, DbParameter[] dbParms, int affrows, object returning)
: base(entityType, sql, dbParms, affrows, returning) {
this.Source = source;
}
/// <summary>
/// 更新的实体
/// </summary>
public object Source { get; }
}
public class AopOnInsertedEventArgs : AopOnUpdatedEventArgs {
public AopOnInsertedEventArgs(Type entityType, object source, string sql, DbParameter[] dbParms, int affrows, long identity, object returning)
: base(entityType, source, sql, dbParms, affrows, returning) {
this.Identity = identity;
}
/// <summary>
/// 执行 ExecuteIdentity 方法时有效
/// </summary>
public long? Identity { get; set; }
}
public class AopOnDeletedEventArgs : EventArgs {
public AopOnDeletedEventArgs(Type entityType, string sql, DbParameter[] dbParms, int affrows, object returning) {
this.EntityType = entityType;
this.Sql = sql;
this.DbParms = dbParms;
this.Affrows = affrows;
this.Returning = returning;
}
/// <summary>
/// 实体类型
/// </summary>
public Type EntityType { get; }
/// <summary>
/// 执行的 SQL
/// </summary>
public string Sql { get; }
/// <summary>
/// 参数化命令
/// </summary>
public DbParameter[] DbParms { get; }
/// <summary>
/// 执行 ExecuteAffrows 方法时有效
/// </summary>
public int Affrows { get; }
/// <summary>
/// 执行 ExecuteDeleted 方法时有效
/// </summary>
public object Returning { get; }
}
public class AopOnSelectedEventArgs : EventArgs {
public AopOnSelectedEventArgs(Type entityType, string sql, DbParameter[] dbParms, object returnData) {
this.EntityType = entityType;
this.Sql = sql;
this.DbParms = dbParms;
this.ReturnData = returnData;
}
/// <summary>
/// 实体类型
/// </summary>
public Type EntityType { get; }
/// <summary>
/// 执行的 SQL
/// </summary>
public string Sql { get; }
/// <summary>
/// 参数化命令
/// </summary>
public DbParameter[] DbParms { get; }
/// <summary>
/// 查询返回的对象
/// </summary>
public object ReturnData { get; }
}
}