mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 20:38:16 +08:00
- 增加 Aop.AuditDataReader 事件拦截 DataReader 读取值 #436;
This commit is contained in:
@ -309,7 +309,7 @@ namespace FreeSql.Internal
|
||||
return Utils.GetDataReaderValue(parent.Property.PropertyType, null);
|
||||
return Utils.GetDataReaderValue(parent.CsType, null);
|
||||
}
|
||||
object objval = dr.GetValue(++index);
|
||||
object objval = Utils.InternalDataReaderGetValue(_common, dr, ++index); // dr.GetValue(++index);
|
||||
if (dbValue != null) dbValue.DbValue = objval == DBNull.Value ? null : objval;
|
||||
if (parent.CsType != parent.MapType)
|
||||
objval = Utils.GetDataReaderValue(parent.MapType, objval);
|
||||
|
@ -18,6 +18,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
public event EventHandler<Aop.SyncStructureAfterEventArgs> SyncStructureAfter;
|
||||
|
||||
public event EventHandler<Aop.AuditValueEventArgs> AuditValue;
|
||||
public event EventHandler<Aop.AuditDataReaderEventArgs> AuditDataReader;
|
||||
|
||||
public event EventHandler<Aop.CommandBeforeEventArgs> CommandBefore;
|
||||
public event EventHandler<Aop.CommandAfterEventArgs> CommandAfter;
|
||||
@ -36,6 +37,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
public EventHandler<Aop.SyncStructureAfterEventArgs> SyncStructureAfterHandler => SyncStructureAfter;
|
||||
|
||||
public EventHandler<Aop.AuditValueEventArgs> AuditValueHandler => AuditValue;
|
||||
public EventHandler<Aop.AuditDataReaderEventArgs> AuditDataReaderHandler => AuditDataReader;
|
||||
|
||||
public EventHandler<Aop.CommandBeforeEventArgs> CommandBeforeHandler => CommandBefore;
|
||||
public EventHandler<Aop.CommandAfterEventArgs> CommandAfterHandler => CommandAfter;
|
||||
|
@ -81,7 +81,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
object val = col.GetValue(d);
|
||||
var auditArgs = new Aop.AuditValueEventArgs(Aop.AuditValueType.InsertOrUpdate, col, table.Properties[col.CsName], val);
|
||||
orm.Aop.AuditValueHandler(sender, auditArgs);
|
||||
if (auditArgs.IsChanged)
|
||||
if (auditArgs.ValueIsChanged)
|
||||
{
|
||||
col.SetValue(d, val = auditArgs.Value);
|
||||
if (changedDict != null && changedDict.ContainsKey(col.Attribute.Name) == false)
|
||||
@ -101,7 +101,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
object val = col.GetValue(data);
|
||||
var auditArgs = new Aop.AuditValueEventArgs(Aop.AuditValueType.InsertOrUpdate, col, table.Properties[col.CsName], val);
|
||||
orm.Aop.AuditValueHandler(sender, auditArgs);
|
||||
if (auditArgs.IsChanged)
|
||||
if (auditArgs.ValueIsChanged)
|
||||
{
|
||||
col.SetValue(data, val = auditArgs.Value);
|
||||
if (changedDict != null && changedDict.ContainsKey(col.Attribute.Name) == false)
|
||||
|
@ -152,7 +152,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
var auditArgs = new Aop.AuditValueEventArgs(Aop.AuditValueType.Insert, col, table.Properties[col.CsName], val);
|
||||
orm.Aop.AuditValueHandler(sender, auditArgs);
|
||||
if (auditArgs.IsChanged)
|
||||
if (auditArgs.ValueIsChanged)
|
||||
{
|
||||
col.SetValue(data, val = auditArgs.Value);
|
||||
if (changedDict != null && changedDict.ContainsKey(col.Attribute.Name) == false)
|
||||
|
@ -353,7 +353,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
object val = col.GetValue(d);
|
||||
var auditArgs = new Aop.AuditValueEventArgs(Aop.AuditValueType.Update, col, table.Properties[col.CsName], val);
|
||||
orm.Aop.AuditValueHandler(sender, auditArgs);
|
||||
if (auditArgs.IsChanged)
|
||||
if (auditArgs.ValueIsChanged)
|
||||
{
|
||||
col.SetValue(d, val = auditArgs.Value);
|
||||
if (changedDict != null && changedDict.ContainsKey(col.Attribute.Name) == false)
|
||||
@ -373,7 +373,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
object val = col.GetValue(data);
|
||||
var auditArgs = new Aop.AuditValueEventArgs(Aop.AuditValueType.Update, col, table.Properties[col.CsName], val);
|
||||
orm.Aop.AuditValueHandler(sender, auditArgs);
|
||||
if (auditArgs.IsChanged)
|
||||
if (auditArgs.ValueIsChanged)
|
||||
{
|
||||
col.SetValue(data, val = auditArgs.Value);
|
||||
if (changedDict != null && changedDict.ContainsKey(col.Attribute.Name) == false)
|
||||
|
@ -1324,7 +1324,14 @@ namespace FreeSql.Internal
|
||||
internal static PropertyInfo PropertyDataReaderFieldCount = typeof(DbDataReader).GetProperty("FieldCount");
|
||||
internal static object InternalDataReaderGetValue(CommonUtils commonUtil, DbDataReader dr, int index)
|
||||
{
|
||||
if (commonUtil._orm.Ado.DataType == DataType.Dameng && dr.IsDBNull(index)) return null;
|
||||
var orm = commonUtil._orm;
|
||||
if (orm.Aop.AuditDataReaderHandler != null)
|
||||
{
|
||||
var args = new Aop.AuditDataReaderEventArgs(dr, index);
|
||||
orm.Aop.AuditDataReaderHandler(orm, args);
|
||||
return args.Value;
|
||||
}
|
||||
if (orm.Ado.DataType == DataType.Dameng && dr.IsDBNull(index)) return null; //OdbcDameng 不会报错
|
||||
return dr.GetValue(index);
|
||||
}
|
||||
internal static RowInfo ExecuteArrayRowReadClassOrTuple(string flagStr, Type typeOrg, int[] indexes, DbDataReader row, int dataIndex, CommonUtils _commonUtils)
|
||||
@ -1447,7 +1454,7 @@ namespace FreeSql.Internal
|
||||
var name = row2.GetName(a);
|
||||
//expando[name] = row2.GetValue(a);
|
||||
if (expandodic.ContainsKey(name)) continue;
|
||||
expandodic.Add(name, row2.GetValue(a));
|
||||
expandodic.Add(name, Utils.InternalDataReaderGetValue(_commonUtils, row2, a));
|
||||
}
|
||||
//expando = expandodic;
|
||||
return new RowInfo(expandodic, fc);
|
||||
|
Reference in New Issue
Block a user