mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	- 增加 Aop.AuditDataReader 事件拦截 DataReader 读取值 #436;
This commit is contained in:
		@@ -57,6 +57,12 @@ namespace FreeSql
 | 
			
		||||
        event EventHandler<Aop.AuditValueEventArgs> AuditValue;
 | 
			
		||||
        EventHandler<Aop.AuditValueEventArgs> AuditValueHandler { get; }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// ADO.NET DataReader 拦截
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        event EventHandler<Aop.AuditDataReaderEventArgs> AuditDataReader;
 | 
			
		||||
        EventHandler<Aop.AuditDataReaderEventArgs> AuditDataReaderHandler { get; }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 监视数据库命令对象(执行前,调试)
 | 
			
		||||
        /// </summary>
 | 
			
		||||
@@ -318,15 +324,59 @@ namespace FreeSql.Aop
 | 
			
		||||
            set
 | 
			
		||||
            {
 | 
			
		||||
                _value = value;
 | 
			
		||||
                this.IsChanged = true;
 | 
			
		||||
                this.ValueIsChanged = true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        private object _value;
 | 
			
		||||
        public bool IsChanged { get; private set; }
 | 
			
		||||
        public bool ValueIsChanged { get; private set; }
 | 
			
		||||
    }
 | 
			
		||||
    public enum AuditValueType { Update, Insert, InsertOrUpdate }
 | 
			
		||||
    #endregion
 | 
			
		||||
 | 
			
		||||
    #region AuditDataReader
 | 
			
		||||
    public class AuditDataReaderEventArgs : EventArgs
 | 
			
		||||
    {
 | 
			
		||||
        public AuditDataReaderEventArgs(DbDataReader dataReader, int index)
 | 
			
		||||
        {
 | 
			
		||||
            this.DataReader = dataReader;
 | 
			
		||||
            this.Index = index;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// ADO.NET 数据流读取对象
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public DbDataReader DataReader { get; }
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// DataReader 对应的 Index 位置
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public int Index { get; }
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 获取 Index 对应的值,也可以设置拦截的新值
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public object Value
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                if (_valueIsGeted == false)
 | 
			
		||||
                {
 | 
			
		||||
                    _value = DataReader.GetValue(Index);
 | 
			
		||||
                    _valueIsGeted = true;
 | 
			
		||||
                }
 | 
			
		||||
                return _value;
 | 
			
		||||
            }
 | 
			
		||||
            set
 | 
			
		||||
            {
 | 
			
		||||
                _value = value;
 | 
			
		||||
                ValueIsChanged = true;
 | 
			
		||||
                _valueIsGeted = true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        private object _value;
 | 
			
		||||
        internal bool _valueIsGeted;
 | 
			
		||||
        public bool ValueIsChanged { get; private set; }
 | 
			
		||||
    }
 | 
			
		||||
    #endregion
 | 
			
		||||
 | 
			
		||||
    #region CommandBefore/After
 | 
			
		||||
    public class CommandBeforeEventArgs : EventArgs
 | 
			
		||||
    {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user