From 750049116d35d4b525ff5014edda3e9baa0570de Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Thu, 14 Apr 2022 19:53:14 +0800 Subject: [PATCH] Update core --- .../QueryableProvider/NavigatManager.cs | 15 +++++++++--- .../SqlBuilderProvider/SqlBuilderProvider.cs | 8 +++++++ .../SqlSugar/Entities/ConnMoreSettings.cs | 1 + .../MethodCallExpressionResolve.cs | 6 ++++- .../Oracle/SqlBuilder/OracleInsertBuilder.cs | 9 ++++++- .../Oracle/SqlBuilder/OracleUpdateBuilder.cs | 9 ++++++- .../Sqlite/SqlBuilder/SqliteInsertBuilder.cs | 9 ++++++- .../Sqlite/SqlBuilder/SqliteUpdateBuilder.cs | 9 ++++++- .../SqlSugar/Utilities/CommonExtensions.cs | 24 +++++++++++++++++++ 9 files changed, 82 insertions(+), 8 deletions(-) create mode 100644 Src/Asp.NetCore2/SqlSugar/Utilities/CommonExtensions.cs diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs index 6b89e191c..7c0b4ab3b 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs @@ -279,21 +279,30 @@ namespace SqlSugar var exp = method.Arguments[1]; where.Add(" " +queryable.QueryBuilder.GetExpressionValue(exp, ResolveExpressType.WhereSingle).GetString()); } + if (method.Method.Name == "WhereIF") + { + var isOk = LambdaExpression.Lambda(method.Arguments[1]).Compile().DynamicInvoke(); + if (isOk.ObjToBool()) + { + var exp = method.Arguments[2]; + where.Add(" " + queryable.QueryBuilder.GetExpressionValue(exp, ResolveExpressType.WhereSingle).GetString()); + } + } else if (method.Method.Name == "OrderBy") { var exp = method.Arguments[1]; - oredrBy.Add( " "+ queryable.QueryBuilder.GetExpressionValue(exp,ResolveExpressType.WhereSingle).GetString()); + oredrBy.Add(" " + queryable.QueryBuilder.GetExpressionValue(exp, ResolveExpressType.WhereSingle).GetString()); } else if (method.Method.Name == "OrderByDescending") { var exp = method.Arguments[1]; - oredrBy.Add(" " + queryable.QueryBuilder.GetExpressionValue(exp, ResolveExpressType.WhereSingle).GetString()+" DESC"); + oredrBy.Add(" " + queryable.QueryBuilder.GetExpressionValue(exp, ResolveExpressType.WhereSingle).GetString() + " DESC"); } else if (method.Method.Name == "ToList") { isList = true; } - else + else { Check.ExceptionEasy($"no support {item}", $"不支持表达式{item} 不支持方法{method.Method.Name}"); } diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs index 0f22a2399..e0504e160 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs @@ -201,6 +201,14 @@ namespace SqlSugar { inValue1 = inValue1.Replace("[null]", "null"); } + if (item.CSharpTypeName.EqualCase("guid")&& inValue1=="('')") + { + inValue1 = $"('{Guid.Empty.ToString()}')"; + } + else if (inValue1 == "()") + { + inValue1 = $"(NULL)"; + } builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "IN", inValue1); parameters.Add(new SugarParameter(parameterName, item.FieldValue)); break; diff --git a/Src/Asp.NetCore2/SqlSugar/Entities/ConnMoreSettings.cs b/Src/Asp.NetCore2/SqlSugar/Entities/ConnMoreSettings.cs index 2ab3dafb7..a1aba4a90 100644 --- a/Src/Asp.NetCore2/SqlSugar/Entities/ConnMoreSettings.cs +++ b/Src/Asp.NetCore2/SqlSugar/Entities/ConnMoreSettings.cs @@ -11,6 +11,7 @@ namespace SqlSugar public bool IsWithNoLockQuery { get; set; } public bool DisableNvarchar { get; set; } + public bool DisableMillisecond { get; set; } public bool PgSqlIsAutoToLower = true; public int DefaultCacheDurationInSeconds { get; set; } public bool? TableEnumIsString { get; set; } diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs index 65b339222..cbffca29e 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs @@ -989,7 +989,11 @@ namespace SqlSugar public string GeDateFormat(string formatString, string value) { - if (IsOracle() || IsPg()) + if (IsOracle() && formatString == "yyyy-MM-dd HH:mm:ss") + { + return $"to_char({value},'yyyy-MM-dd HH:mi:ss') "; + } + else if (IsOracle() || IsPg()) { return $"to_char({value},'{formatString}') "; } diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/Oracle/SqlBuilder/OracleInsertBuilder.cs b/Src/Asp.NetCore2/SqlSugar/Realization/Oracle/SqlBuilder/OracleInsertBuilder.cs index a927e9b45..65f434ecf 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/Oracle/SqlBuilder/OracleInsertBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/Oracle/SqlBuilder/OracleInsertBuilder.cs @@ -121,7 +121,14 @@ namespace SqlSugar { date = Convert.ToDateTime("1900-1-1"); } - return "to_timestamp('" + date.ToString("yyyy-MM-dd HH:mm:ss.ffffff") + "', 'YYYY-MM-DD HH24:MI:SS.FF') "; + if (this.Context.CurrentConnectionConfig?.MoreSettings?.DisableMillisecond == true) + { + return "to_date('" + date.ToString("yyyy-MM-dd HH:mm:ss") + "', 'YYYY-MM-DD HH24:MI:SS') "; + } + else + { + return "to_timestamp('" + date.ToString("yyyy-MM-dd HH:mm:ss.ffffff") + "', 'YYYY-MM-DD HH24:MI:SS.FF') "; + } } else if (type.IsEnum()) { diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/Oracle/SqlBuilder/OracleUpdateBuilder.cs b/Src/Asp.NetCore2/SqlSugar/Realization/Oracle/SqlBuilder/OracleUpdateBuilder.cs index 556f465c5..39b834221 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/Oracle/SqlBuilder/OracleUpdateBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/Oracle/SqlBuilder/OracleUpdateBuilder.cs @@ -57,7 +57,14 @@ namespace SqlSugar { date = Convert.ToDateTime("1900-1-1"); } - return "to_timestamp('" + date.ToString("yyyy-MM-dd HH:mm:ss.ffffff") + "', 'YYYY-MM-DD HH24:MI:SS.FF') "; + if (this.Context.CurrentConnectionConfig?.MoreSettings?.DisableMillisecond == true) + { + return "to_date('" + date.ToString("yyyy-MM-dd HH:mm:ss") + "', 'YYYY-MM-DD HH24:MI:SS') "; + } + else + { + return "to_timestamp('" + date.ToString("yyyy-MM-dd HH:mm:ss.ffffff") + "', 'YYYY-MM-DD HH24:MI:SS.FF') "; + } } else if (type.IsEnum()) { diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteInsertBuilder.cs b/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteInsertBuilder.cs index d1c553641..ed7d87e44 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteInsertBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteInsertBuilder.cs @@ -95,7 +95,14 @@ namespace SqlSugar { date = Convert.ToDateTime("1900-1-1"); } - return "'" + date.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'"; + if (this.Context.CurrentConnectionConfig?.MoreSettings?.DisableMillisecond == true) + { + return "'" + date.ToString("yyyy-MM-dd HH:mm:ss") + "'"; + } + else + { + return "'" + date.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'"; + } } else if (type.IsEnum()) { diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteUpdateBuilder.cs b/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteUpdateBuilder.cs index 9e055bfb2..b2ec5a188 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteUpdateBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteUpdateBuilder.cs @@ -51,7 +51,14 @@ namespace SqlSugar { date = Convert.ToDateTime("1900-1-1"); } - return "'" + date.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'"; + if (this.Context.CurrentConnectionConfig?.MoreSettings?.DisableMillisecond == true) + { + return "'" + date.ToString("yyyy-MM-dd HH:mm:ss") + "'"; + } + else + { + return "'" + date.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'"; + } } else if (type == UtilConstants.DateType && iswhere) { diff --git a/Src/Asp.NetCore2/SqlSugar/Utilities/CommonExtensions.cs b/Src/Asp.NetCore2/SqlSugar/Utilities/CommonExtensions.cs new file mode 100644 index 000000000..086658cc6 --- /dev/null +++ b/Src/Asp.NetCore2/SqlSugar/Utilities/CommonExtensions.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Text; +using System.Threading.Tasks; + +namespace SqlSugar +{ + public static class CommonExtensions + { + public static IEnumerable WhereIF(this IEnumerable thisValue, bool isOk, Func predicate) + { + if (isOk) + { + return thisValue.Where(predicate); + } + else + { + return thisValue; + } + } + } +}