From e517e3b4dea24e4ff51c6672e39ffe7298daf1d8 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sat, 12 Aug 2023 16:29:08 +0800 Subject: [PATCH] Synchronization code --- .../Abstract/UpdateProvider/UpdateableHelper.cs | 8 ++------ Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableHelper.cs b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableHelper.cs index 9a6c51e24..57d19c7bb 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableHelper.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableHelper.cs @@ -678,11 +678,7 @@ namespace SqlSugar var whereSql = Regex.Replace(sql, ".* WHERE ", "", RegexOptions.Singleline); if (IsExists(sql)) { - whereSql = Regex.Match(sql, @"\(EXISTS.+").Value; - if (sql.Contains("((EXISTS")) - { - whereSql = $"({whereSql}"; - } + whereSql = UtilMethods.RemoveBeforeFirstWhere(sql); } dt = this.Context.Queryable().Filter(null, true).Where(whereSql).AddParameters(parameters).ToDataTable(); } @@ -724,7 +720,7 @@ namespace SqlSugar private static bool IsExists(string sql) { - return sql.Contains("WHERE (EXISTS") || sql.Contains("((EXISTS ("); + return UtilMethods.CountSubstringOccurrences(sql,"WHERE")>1; } private void ThrowUpdateByExpression() diff --git a/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs b/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs index ffc0ad0cd..30b904628 100644 --- a/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs +++ b/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs @@ -18,6 +18,23 @@ namespace SqlSugar { public class UtilMethods { + public static int CountSubstringOccurrences(string mainString, string searchString) + { + string[] substrings = mainString.Split(new string[] { searchString }, StringSplitOptions.None); + return substrings.Length - 1; + } + public static string RemoveBeforeFirstWhere(string query) + { + int whereIndex = query.IndexOf("WHERE", StringComparison.OrdinalIgnoreCase); + if (whereIndex >= 0) + { + return query.Substring(whereIndex + "WHERE".Length); + } + else + { + return query; + } + } public static List ConvertToListOfObjects(object inValues) { // 创建一个新的List并逐个将元素转换并添加到其中