From 13e6d9e17cc4177e3d26ae8a3ca4266cfed4eb42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com> Date: Fri, 12 May 2023 15:10:45 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9ApgSql=E6=B2=A1=E6=9C=89nvarchar?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ZR.Admin.WebApi/Extensions/DbExtension.cs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/ZR.Admin.WebApi/Extensions/DbExtension.cs b/ZR.Admin.WebApi/Extensions/DbExtension.cs index 2fe7fd7..6be1328 100644 --- a/ZR.Admin.WebApi/Extensions/DbExtension.cs +++ b/ZR.Admin.WebApi/Extensions/DbExtension.cs @@ -60,7 +60,7 @@ namespace ZR.Admin.WebApi.Extensions var config = db.GetConnection(iocConfig.ConfigId).CurrentConnectionConfig; string configId = config.ConfigId; - db.GetConnectionScope(configId).Aop.OnLogExecuted = (sql, pars) => + db.GetConnectionScope(configId).Aop.OnLogExecuting = (sql, pars) => { string log = $"【db{configId} SQL语句】{UtilMethods.GetSqlString(config.DbType, sql, pars)}\n"; if (sql.TrimStart().StartsWith("SELECT", StringComparison.OrdinalIgnoreCase)) @@ -82,9 +82,12 @@ namespace ZR.Admin.WebApi.Extensions } }; - db.GetConnectionScope(configId).Aop.OnError = (e) => + db.GetConnectionScope(configId).Aop.OnError = (ex) => { - logger.Error(e, $"执行SQL出错:{e.Message},{e.StackTrace}"); + var pars = db.Utilities.SerializeObject(((SugarParameter[])ex.Parametres).ToDictionary(it => it.ParameterName, it => it.Value)); + + string sql = "【错误SQL】" + UtilMethods.GetSqlString(config.DbType, ex.Sql, (SugarParameter[])ex.Parametres) + "\r\n"; + logger.Error(ex, $"{sql}\r\n{ex.Message}\r\n{ex.StackTrace}"); }; db.GetConnectionScope(configId).CurrentConnectionConfig.MoreSettings = new ConnMoreSettings() @@ -93,7 +96,14 @@ namespace ZR.Admin.WebApi.Extensions }; db.GetConnectionScope(configId).CurrentConnectionConfig.ConfigureExternalServices = new ConfigureExternalServices() { - DataInfoCacheService = cache + DataInfoCacheService = cache, + EntityService = (c, p) => + { + if (db.GetConnectionScope(configId).CurrentConnectionConfig.DbType == DbType.PostgreSQL && p.DataType != null && p.DataType.Contains("nvarchar")) + { + p.DataType = "text"; + } + } }; }