From 57273e8239e928991e7cfc74f30b424419a65a05 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Fri, 11 Aug 2017 12:49:39 +0800 Subject: [PATCH] =?UTF-8?q?Perform=20processing=20before=20the=20SQL=20is?= =?UTF-8?q?=20executed=EF=BC=8Creturn=20new=20sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Abstract/AdoProvider/AdoProvider.cs | 21 ++++++++++++++++--- Src/Asp.Net/SqlSugar/Interface/IAdo.cs | 1 + 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs index f8071fcfd..6b6896682 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs @@ -50,6 +50,7 @@ namespace SqlSugar public virtual bool IsClearParameters { get; set; } public virtual Action LogEventStarting { get; set; } public virtual Action LogEventCompleted { get; set; } + public virtual Func> ProcessingEventStartingSQL { get; set; } #endregion #region Connection @@ -208,6 +209,8 @@ namespace SqlSugar #region Core public virtual int ExecuteCommand(string sql, params SugarParameter[] parameters) { + if (this.ProcessingEventStartingSQL != null) + ExecuteProcessingSQL(ref sql, parameters); ExecuteBefore(sql, parameters); IDbCommand sqlCommand = GetCommand(sql, parameters); int count = sqlCommand.ExecuteNonQuery(); @@ -219,10 +222,12 @@ namespace SqlSugar } public virtual IDataReader GetDataReader(string sql, params SugarParameter[] parameters) { + if (this.ProcessingEventStartingSQL != null) + ExecuteProcessingSQL(ref sql, parameters); ExecuteBefore(sql, parameters); IDbCommand sqlCommand = GetCommand(sql, parameters); var isAutoClose = this.Context.CurrentConnectionConfig.IsAutoCloseConnection && this.Transaction == null; - IDataReader sqlDataReader = sqlCommand.ExecuteReader(isAutoClose?CommandBehavior.CloseConnection:CommandBehavior.Default); + IDataReader sqlDataReader = sqlCommand.ExecuteReader(isAutoClose ? CommandBehavior.CloseConnection : CommandBehavior.Default); if (this.IsClearParameters) sqlCommand.Parameters.Clear(); ExecuteAfter(sql, parameters); @@ -230,6 +235,8 @@ namespace SqlSugar } public virtual DataSet GetDataSetAll(string sql, params SugarParameter[] parameters) { + if (this.ProcessingEventStartingSQL != null) + ExecuteProcessingSQL(ref sql, parameters); ExecuteBefore(sql, parameters); IDataAdapter dataAdapter = this.GetAdapter(); IDbCommand sqlCommand = GetCommand(sql, parameters); @@ -244,6 +251,8 @@ namespace SqlSugar } public virtual object GetScalar(string sql, params SugarParameter[] parameters) { + if (this.ProcessingEventStartingSQL != null) + ExecuteProcessingSQL(ref sql, parameters); ExecuteBefore(sql, parameters); IDbCommand sqlCommand = GetCommand(sql, parameters); object scalar = sqlCommand.ExecuteScalar(); @@ -321,7 +330,7 @@ namespace SqlSugar } public virtual decimal GetDecimal(string sql, params SugarParameter[] parameters) { - return GetScalar(sql, parameters).ObjToDecimal(); + return GetScalar(sql, parameters).ObjToDecimal(); } public virtual decimal GetDecimal(string sql, List parameters) { @@ -340,7 +349,7 @@ namespace SqlSugar } public virtual DateTime GetDateTime(string sql, params SugarParameter[] parameters) { - return GetScalar(sql, parameters).ObjToDate(); + return GetScalar(sql, parameters).ObjToDate(); } public virtual DateTime GetDateTime(string sql, List parameters) { @@ -496,6 +505,12 @@ namespace SqlSugar #endregion #region Helper + private void ExecuteProcessingSQL(ref string sql, SugarParameter[] parameters) + { + var result = this.ProcessingEventStartingSQL(sql, parameters); + sql = result.Key; + parameters = result.Value; + } public virtual void ExecuteBefore(string sql, SugarParameter[] parameters) { if (this.IsEnableLogEvent) diff --git a/Src/Asp.Net/SqlSugar/Interface/IAdo.cs b/Src/Asp.Net/SqlSugar/Interface/IAdo.cs index 982b76121..44ea41fce 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IAdo.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IAdo.cs @@ -24,6 +24,7 @@ namespace SqlSugar bool IsEnableLogEvent { get; set; } Action LogEventStarting { get; set; } Action LogEventCompleted { get; set; } + Func> ProcessingEventStartingSQL { get; set; } bool IsClearParameters { get; set; } int CommandTimeOut { get; set; } IDbBind DbBind { get; }