From 3e234aa52f1534a98bed9770fe4b249fd5074778 Mon Sep 17 00:00:00 2001 From: sunkaixuna <610262374@qq.com> Date: Thu, 30 Dec 2021 16:46:15 +0800 Subject: [PATCH] Update core --- .../ResolveItems/ConstantExpressionResolve.cs | 15 +++++++++++++++ .../MethodCallExpressionResolve.cs | 18 ++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/ConstantExpressionResolve.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/ConstantExpressionResolve.cs index 948de6eac..d32a34ab9 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/ConstantExpressionResolve.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/ConstantExpressionResolve.cs @@ -13,6 +13,21 @@ namespace SqlSugar var expression = base.Expression as ConstantExpression; var isLeft = parameter.IsLeft; object value = ExpressionTool.GetValue(expression.Value,this.Context); + if (this.Context.TableEnumIsString == true + && value != null + && value.IsInt() + && base.BaseParameter?.OppsiteExpression != null) + { + if (base.BaseParameter?.OppsiteExpression is UnaryExpression) + { + var oppsiteExpression = base.BaseParameter?.OppsiteExpression as UnaryExpression; + var oppsiteValue = oppsiteExpression.Operand; + if (oppsiteValue.Type.IsEnum()) + { + value = UtilMethods.ChangeType2(value, oppsiteValue.Type).ToString(); + } + } + } var baseParameter = parameter.BaseParameter; baseParameter.ChildExpression = expression; var isSetTempData = baseParameter.CommonTempData.HasValue() && baseParameter.CommonTempData.Equals(CommonTempDataType.Result); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs index 5569d127d..b96470917 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs @@ -678,6 +678,24 @@ namespace SqlSugar model.Args[0].MemberValue = first.Value; } } + if (this.Context.TableEnumIsString == true) + { + List enumStringList = new List(); + foreach (var inItem in (model.Args[0].MemberValue as IEnumerable)) + { + if (inItem != null) + { + if (UtilMethods.GetUnderType(inItem.GetType()).IsEnum()) + { + enumStringList.Add(inItem.ToString()); + } + } + } + if (enumStringList.Any()) + { + model.Args[0].MemberValue = enumStringList; + } + } var caResult = this.Context.DbMehtods.ContainsArray(model); this.Context.Parameters.RemoveAll(it => it.ParameterName == model.Args[0].MemberName.ObjToString()); return caResult;