From 9118407952678cf5d7ddccb9bc1710f5e8a56d60 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Fri, 23 Dec 2022 09:14:35 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E5=A2=9E=E5=8A=A0=20Aop.CommandBefore=20?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=20.CommandText=20=3D=20null=20=E5=8F=AF?= =?UTF-8?q?=E6=8B=A6=E6=88=AA=E6=9C=AC=E6=AC=A1=E6=89=A7=E8=A1=8C=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Examples/base_entity/Program.cs | 6 ++++- FreeSql.DbContext/FreeSql.DbContext.xml | 9 +++++++ FreeSql/FreeSql.xml | 9 +++++++ FreeSql/FreeSqlBuilder.cs | 7 +++++ .../CommonProvider/AdoProvider/AdoProvider.cs | 26 ++++++++++++++----- .../AdoProvider/AdoProviderAsync.cs | 22 +++++++++++++--- .../AdoProvider/AdoProviderTransaction.cs | 6 ++--- 7 files changed, 71 insertions(+), 14 deletions(-) diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index 322bc651..0adbd60a 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -480,7 +480,11 @@ namespace base_entity //.UseConnectionString(FreeSql.DataType.OdbcDameng, "Driver={DM8 ODBC DRIVER};Server=127.0.0.1:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=USER1;PWD=123456789") - .UseMonitorCommand(cmd => Console.WriteLine(cmd.CommandText + "\r\n")) + .UseMonitorCommand(cmd => + { + Console.WriteLine(cmd.CommandText + "\r\n"); + cmd.CommandText = null; //不执行 + }) .UseLazyLoading(true) //.UseGenerateCommandParameterWithLambda(true) .Build(); diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml index 537315e2..26522f10 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.xml +++ b/FreeSql.DbContext/FreeSql.DbContext.xml @@ -800,5 +800,14 @@ + + + 批量注入 Repository,可以参考代码自行调整 + + + + + + diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index ecf9a71d..21395735 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -1413,6 +1413,15 @@ + + + SQL名称是否使用 [] `` "" + true: SELECT .. FROM [table] + false: SELECT .. FROM table + + + + 指定映射优先级 diff --git a/FreeSql/FreeSqlBuilder.cs b/FreeSql/FreeSqlBuilder.cs index 013bc061..78cfbbcf 100644 --- a/FreeSql/FreeSqlBuilder.cs +++ b/FreeSql/FreeSqlBuilder.cs @@ -159,6 +159,13 @@ namespace FreeSql _nameConvertType = convertType; return this; } + /// + /// SQL名称是否使用 [] `` "" + /// true: SELECT .. FROM [table] + /// false: SELECT .. FROM table + /// + /// + /// public FreeSqlBuilder UseQuoteSqlName(bool value) { _isQuoteSqlName = value; diff --git a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs index ae30c2fe..846a4c3d 100644 --- a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs +++ b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs @@ -52,7 +52,7 @@ namespace FreeSql.Internal.CommonProvider { TimeSpan ts = DateTime.Now.Subtract(dt); if (ex == null && ts.TotalMilliseconds > 100) - Trace.WriteLine(logtxt.Insert(0, $"{pool?.Policy.Name}(执行SQL)语句耗时过长{ts.TotalMilliseconds}ms\r\n{cmd.CommandText}\r\n").ToString()); + logtxt.Insert(0, $"{pool?.Policy.Name}(执行SQL)语句耗时过长{ts.TotalMilliseconds}ms\r\n{cmd.CommandText}\r\n").ToString(); else logtxt.Insert(0, $"{pool?.Policy.Name}(执行SQL)耗时{ts.TotalMilliseconds}ms\r\n{cmd.CommandText}\r\n").ToString(); } @@ -69,7 +69,7 @@ namespace FreeSql.Internal.CommonProvider log.Append(parm.ParameterName.PadRight(20, ' ')).Append(" = ").Append((parm.Value ?? DBNull.Value) == DBNull.Value ? "NULL" : parm.Value).Append("\r\n"); log.Append(ex.Message); - Trace.WriteLine(log.ToString()); + //Trace.WriteLine(log.ToString()); if (cmd.Transaction != null) { @@ -601,6 +601,14 @@ namespace FreeSql.Internal.CommonProvider Object conn = null; var pc = PrepareCommand(connection, transaction, cmdType, cmdText, cmdTimeout, cmdParms, logtxt); + if (string.IsNullOrEmpty(pc.cmd.CommandText)) //被拦截 CommandBefore + { + LoggerException(pool, pc, null, dt, logtxt); + pc.cmd.Parameters.Clear(); + if (DataType == DataType.Sqlite) pc.cmd.Dispose(); + return; + } + if (IsTracePerformance) { logtxt.Append("PrepareCommand: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n"); @@ -785,8 +793,11 @@ namespace FreeSql.Internal.CommonProvider Exception ex = null; try { - if (pc.cmd.Connection == null) pc.cmd.Connection = (conn = this.MasterPool.Get()).Value; - val = pc.cmd.ExecuteNonQuery(); + if (string.IsNullOrEmpty(pc.cmd.CommandText) == false) //是否被拦截 CommandBefore + { + if (pc.cmd.Connection == null) pc.cmd.Connection = (conn = this.MasterPool.Get()).Value; + val = pc.cmd.ExecuteNonQuery(); + } } catch (Exception ex2) { @@ -821,8 +832,11 @@ namespace FreeSql.Internal.CommonProvider Exception ex = null; try { - if (pc.cmd.Connection == null) pc.cmd.Connection = (conn = this.MasterPool.Get()).Value; - val = pc.cmd.ExecuteScalar(); + if (string.IsNullOrEmpty(pc.cmd.CommandText) == false) //是否被拦截 CommandBefore + { + if (pc.cmd.Connection == null) pc.cmd.Connection = (conn = this.MasterPool.Get()).Value; + val = pc.cmd.ExecuteScalar(); + } } catch (Exception ex2) { diff --git a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderAsync.cs b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderAsync.cs index 23a12c2f..5af47567 100644 --- a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderAsync.cs +++ b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderAsync.cs @@ -508,6 +508,14 @@ namespace FreeSql.Internal.CommonProvider Object conn = null; var pc = await PrepareCommandAsync(connection, transaction, cmdType, cmdText, cmdTimeout, cmdParms, logtxt, cancellationToken); + if (string.IsNullOrEmpty(pc.cmd.CommandText)) //被拦截 CommandBefore + { + LoggerException(pool, pc, null, dt, logtxt); + pc.cmd.Parameters.Clear(); + if (DataType == DataType.Sqlite) pc.cmd.Dispose(); + return; + } + if (IsTracePerformance) { logtxt.Append("PrepareCommand: ").Append(DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds).Append("ms Total: ").Append(DateTime.Now.Subtract(dt).TotalMilliseconds).Append("ms\r\n"); @@ -690,8 +698,11 @@ namespace FreeSql.Internal.CommonProvider Exception ex = null; try { - if (pc.cmd.Connection == null) pc.cmd.Connection = (conn = await this.MasterPool.GetAsync()).Value; - val = await pc.cmd.ExecuteNonQueryAsync(cancellationToken); + if (string.IsNullOrEmpty(pc.cmd.CommandText) == false) //是否被拦截 CommandBefore + { + if (pc.cmd.Connection == null) pc.cmd.Connection = (conn = await this.MasterPool.GetAsync()).Value; + val = await pc.cmd.ExecuteNonQueryAsync(cancellationToken); + } } catch (Exception ex2) { @@ -726,8 +737,11 @@ namespace FreeSql.Internal.CommonProvider Exception ex = null; try { - if (pc.cmd.Connection == null) pc.cmd.Connection = (conn = await this.MasterPool.GetAsync()).Value; - val = await pc.cmd.ExecuteScalarAsync(cancellationToken); + if (string.IsNullOrEmpty(pc.cmd.CommandText) == false) //是否被拦截 CommandBefore + { + if (pc.cmd.Connection == null) pc.cmd.Connection = (conn = await this.MasterPool.GetAsync()).Value; + val = await pc.cmd.ExecuteScalarAsync(cancellationToken); + } } catch (Exception ex2) { diff --git a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderTransaction.cs b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderTransaction.cs index f0e49e74..e87abc32 100644 --- a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderTransaction.cs +++ b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderTransaction.cs @@ -53,7 +53,7 @@ namespace FreeSql.Internal.CommonProvider } catch (Exception ex) { - Trace.WriteLine($"数据库出错(开启事务){ex.Message} \r\n{ex.StackTrace}"); + //Trace.WriteLine($"数据库出错(开启事务){ex.Message} \r\n{ex.StackTrace}"); MasterPool.Return(conn); var after = new Aop.TraceAfterEventArgs(before, "", ex); _util?._orm?.Aop.TraceAfterHandler?.Invoke(this, after); @@ -83,7 +83,7 @@ namespace FreeSql.Internal.CommonProvider { if (tran.Transaction.Connection != null) //用户自行 Commit、Rollback { - Trace.WriteLine($"线程{tran.Connection.LastGetThreadId}事务{remark}"); + //Trace.WriteLine($"线程{tran.Connection.LastGetThreadId}事务{remark}"); if (isCommit) tran.Transaction.Commit(); else tran.Transaction.Rollback(); } @@ -91,7 +91,7 @@ namespace FreeSql.Internal.CommonProvider catch (Exception ex2) { ex = ex2; - Trace.WriteLine($"数据库出错({remark}事务):{ex.Message} {ex.StackTrace}"); + //Trace.WriteLine($"数据库出错({remark}事务):{ex.Message} {ex.StackTrace}"); } finally {