From 4f57308b3412db961f0bb218dd77ac4f02b82cea Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Fri, 2 Sep 2022 20:38:33 +0800 Subject: [PATCH] Update .net core project --- .../ResolveItems/BaseResolve.cs | 16 ++++++++-- .../ResolveItems/BinaryExpressionResolve.cs | 29 ++++++++++++++++++- .../SqlSugar/Interface/IQueryable.cs | 4 +-- 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs index 5633ec9bb..9ab3eca1a 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs @@ -172,7 +172,12 @@ namespace SqlSugar string appendValue = Context.SqlParameterKeyWord + ((MemberExpression)oppoSiteExpression).Member.Name + Context.ParameterIndex; - if (value.ObjToString() != "NULL" && !parameter.ValueIsNull) + if (IsNullValue(parameter, value)) + { + appendValue = $" NULL "; + parameter.BaseParameter.ValueIsNull = true; + } + else if (value.ObjToString() != "NULL" && !parameter.ValueIsNull) { EntityColumnInfo columnInfo = GetColumnInfo(oppoSiteExpression); if (columnInfo != null && columnInfo.SqlParameterDbType != null && columnInfo.SqlParameterDbType is System.Data.DbType) @@ -726,7 +731,14 @@ namespace SqlSugar #endregion #region Validate - + private bool IsNullValue(ExpressionParameter parameter, object value) + { + return value == null + && !parameter.ValueIsNull + && parameter.BaseParameter != null + && parameter.BaseParameter.OperatorValue.IsIn("=","<>") + && this.Context.ResolveType.IsIn(ResolveExpressType.WhereMultiple, ResolveExpressType.WhereSingle); + } private static bool IsNotCaseExpression(Expression item) { if ((item as MethodCallExpression).Method.Name == "IIF") diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BinaryExpressionResolve.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BinaryExpressionResolve.cs index 49266790b..a30b8f86b 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BinaryExpressionResolve.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BinaryExpressionResolve.cs @@ -33,12 +33,34 @@ namespace SqlSugar { SubGroup(expression, operatorValue); } + else if (IsJoinString(expression, operatorValue)) + { + JoinString(parameter, expression); + } else { DefaultBinary(parameter, expression, operatorValue); } } + private void JoinString(ExpressionParameter parameter, BinaryExpression expression) + { + var leftString = GetNewExpressionValue(expression.Left); + var RightString = GetNewExpressionValue(expression.Right); + var joinString = this.Context.DbMehtods.MergeString(leftString, RightString); + if (this.Context.Result.Contains(ExpressionConst.FormatSymbol)) + { + base.Context.Result.Replace("{0}", $" {joinString} "); + base.Context.Result.Append(" " + ExpressionConst.ExpressionReplace + parameter.BaseParameter.Index + " "); + } + else + { + base.Context.Result.Append($" {joinString} "); + } + } + + + private void DefaultBinary(ExpressionParameter parameter, BinaryExpression expression, string operatorValue) { var isEqual = expression.NodeType == ExpressionType.Equal; @@ -232,7 +254,12 @@ namespace SqlSugar } return true; } - + private static bool IsJoinString(BinaryExpression expression, string operatorValue) + { + return operatorValue == "+" + && expression.Right.Type == UtilConstants.StringType + && expression.Left.Type==UtilConstants.StringType; + } private static bool RightIsHasValue(Expression leftExpression, Expression rightExpression,bool isLogic) { return isLogic&& diff --git a/Src/Asp.NetCore2/SqlSugar/Interface/IQueryable.cs b/Src/Asp.NetCore2/SqlSugar/Interface/IQueryable.cs index bf9ae51d9..3ec459521 100644 --- a/Src/Asp.NetCore2/SqlSugar/Interface/IQueryable.cs +++ b/Src/Asp.NetCore2/SqlSugar/Interface/IQueryable.cs @@ -188,10 +188,10 @@ namespace SqlSugar List ToPageList(int pageNumber, int pageSize); Task> ToPageListAsync(int pageNumber, int pageSize); List ToPageList(int pageNumber, int pageSize, ref int totalNumber); - List ToPageList(int pageIndex, int pageSize, ref int totalNumber, Expression> expression); + List ToPageList(int pageNumber, int pageSize, ref int totalNumber, Expression> expression); List ToPageList(int pageNumber, int pageSize, ref int totalNumber,ref int totalPage); Task> ToPageListAsync(int pageNumber, int pageSize, RefAsync totalNumber); - Task> ToPageListAsync(int pageIndex, int pageSize, RefAsync totalNumber, Expression> expression); + Task> ToPageListAsync(int pageNumber, int pageSize, RefAsync totalNumber, Expression> expression); Task> ToPageListAsync(int pageNumber, int pageSize, RefAsync totalNumber, RefAsync totalPage); ISugarQueryable WithCache(string cacheKey,int cacheDurationInSeconds = int.MaxValue); ISugarQueryable WithCache(int cacheDurationInSeconds = int.MaxValue);