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
{