diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs index d9fc2fe3c..803227027 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs @@ -442,7 +442,14 @@ namespace SqlSugar DeleteBuilder.TableWithString = lockString; return this; } - + public virtual string ToSqlString() + { + var sqlObj = this.ToSql(); + var result = sqlObj.Key; + if (result == null) return null; + result = UtilMethods.GetSqlString(this.Context.CurrentConnectionConfig, sqlObj, result); + return result; + } public KeyValuePair> ToSql() { DeleteBuilder.EntityInfo = this.Context.EntityMaintenance.GetEntityInfo(); diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs index e537ce555..99f7962d1 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs @@ -53,6 +53,14 @@ namespace SqlSugar After(sql, null); return result; } + public virtual string ToSqlString() + { + var sqlObj = this.ToSql(); + var result = sqlObj.Key; + if (result == null) return null; + result = UtilMethods.GetSqlString(this.Context.CurrentConnectionConfig, sqlObj, result); + return result; + } public virtual KeyValuePair> ToSql() { InsertBuilder.IsReturnIdentity = true; diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 744347031..46a6cdda9 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -1932,35 +1932,16 @@ namespace SqlSugar totalPage = (totalNumber + pageSize - 1) / pageSize; return result; } - public virtual string ToSqlString() + public virtual string ToSqlString() { var sqlObj = this.Clone().ToSql(); var result = sqlObj.Key; if (result == null) return null; - if (sqlObj.Value != null) - { - foreach (var item in sqlObj.Value.OrderByDescending(it=>it.ParameterName.Length)) - { - if (item.Value == null || item.Value == DBNull.Value) - { - result = result.Replace(item.ParameterName, "null"); - } - else if (UtilMethods.IsNumber(item.Value.GetType().Name)) - { - result = result.Replace(item.ParameterName, item.Value.ObjToString()); - } - else if(this.Context.CurrentConnectionConfig.MoreSettings?.DisableNvarchar==true||item.DbType==System.Data.DbType.AnsiString||this.Context.CurrentConnectionConfig.DbType==DbType.Sqlite) - { - result = result.Replace(item.ParameterName, $"'{item.Value.ObjToString()}'"); - } - else - { - result = result.Replace(item.ParameterName, $"N'{item.Value.ObjToString()}'"); - } - } - } + result = UtilMethods.GetSqlString(this.Context.CurrentConnectionConfig,sqlObj, result); return result; } + + public virtual KeyValuePair> ToSql() { if (!QueryBuilder.IsClone) diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index d8c533b85..1eabd839b 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -38,6 +38,14 @@ namespace SqlSugar #endregion #region Core + public virtual string ToSqlString() + { + var sqlObj = this.ToSql(); + var result = sqlObj.Key; + if (result == null) return null; + result = UtilMethods.GetSqlString(this.Context.CurrentConnectionConfig, sqlObj, result); + return result; + } public KeyValuePair> ToSql() { diff --git a/Src/Asp.NetCore2/SqlSugar/Interface/IDeleteable.cs b/Src/Asp.NetCore2/SqlSugar/Interface/IDeleteable.cs index 8d22d39de..2c509e775 100644 --- a/Src/Asp.NetCore2/SqlSugar/Interface/IDeleteable.cs +++ b/Src/Asp.NetCore2/SqlSugar/Interface/IDeleteable.cs @@ -36,6 +36,7 @@ namespace SqlSugar IDeleteable RemoveDataCache(); IDeleteable RemoveDataCache(string likeString); KeyValuePair> ToSql(); + string ToSqlString(); IDeleteable EnableQueryFilter(); SplitTableDeleteProvider SplitTable(Func, IEnumerable> getTableNamesFunc); SplitTableDeleteByObjectProvider SplitTable(); diff --git a/Src/Asp.NetCore2/SqlSugar/Interface/IUpdateable.cs b/Src/Asp.NetCore2/SqlSugar/Interface/IUpdateable.cs index 5a102bdab..56e5703b4 100644 --- a/Src/Asp.NetCore2/SqlSugar/Interface/IUpdateable.cs +++ b/Src/Asp.NetCore2/SqlSugar/Interface/IUpdateable.cs @@ -93,6 +93,7 @@ namespace SqlSugar IUpdateable RemoveDataCache(string likeString); IUpdateable CallEntityMethod(Expression> method); KeyValuePair> ToSql(); + string ToSqlString(); void AddQueue(); SplitTableUpdateProvider SplitTable(Func, IEnumerable> getTableNamesFunc); SplitTableUpdateByObjectProvider SplitTable(); diff --git a/Src/Asp.NetCore2/SqlSugar/Interface/Insertable.cs b/Src/Asp.NetCore2/SqlSugar/Interface/Insertable.cs index e136e14e8..f45a62b57 100644 --- a/Src/Asp.NetCore2/SqlSugar/Interface/Insertable.cs +++ b/Src/Asp.NetCore2/SqlSugar/Interface/Insertable.cs @@ -42,6 +42,7 @@ namespace SqlSugar IInsertable RemoveDataCache(); IInsertable RemoveDataCache(string likeString); KeyValuePair> ToSql(); + string ToSqlString(); SqlServerBlukCopy UseSqlServer(); MySqlBlukCopy UseMySql(); OracleBlukCopy UseOracle(); diff --git a/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs b/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs index 0d4784938..12ddcae06 100644 --- a/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs +++ b/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs @@ -730,5 +730,33 @@ namespace SqlSugar string FirstDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd"); return Convert.ToDateTime(FirstDay); } + + public static string GetSqlString(ConnectionConfig connectionConfig,KeyValuePair> sqlObj, string result) + { + if (sqlObj.Value != null) + { + foreach (var item in sqlObj.Value.OrderByDescending(it => it.ParameterName.Length)) + { + if (item.Value == null || item.Value == DBNull.Value) + { + result = result.Replace(item.ParameterName, "null"); + } + else if (UtilMethods.IsNumber(item.Value.GetType().Name)) + { + result = result.Replace(item.ParameterName, item.Value.ObjToString()); + } + else if (connectionConfig.MoreSettings?.DisableNvarchar == true || item.DbType == System.Data.DbType.AnsiString || connectionConfig.DbType == DbType.Sqlite) + { + result = result.Replace(item.ParameterName, $"'{item.Value.ObjToString()}'"); + } + else + { + result = result.Replace(item.ParameterName, $"N'{item.Value.ObjToString()}'"); + } + } + } + + return result; + } } }