diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve_Helper.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve_Helper.cs index 8ce69d6be..d8b6f1fd1 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve_Helper.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve_Helper.cs @@ -40,8 +40,9 @@ namespace SqlSugar #endregion #region Get Mehtod - protected object GetMemberValue(object value, Expression exp) + protected object GetMemberValue(object value, Expression exp,out bool isConvert) { + isConvert = false; if (exp is MemberExpression) { var member = (exp as MemberExpression); @@ -57,6 +58,7 @@ namespace SqlSugar var obj = Activator.CreateInstance(type); var p = ParameterConverter.Invoke(obj, new object[] { value, 100 + this.Context.ParameterIndex }) as SugarParameter; value = p.Value; + isConvert = true; } } } diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MemberConstExpressionResolve.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MemberConstExpressionResolve.cs index 027942fdb..ccdb43783 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MemberConstExpressionResolve.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MemberConstExpressionResolve.cs @@ -38,11 +38,19 @@ namespace SqlSugar if (parameter.OppsiteExpression != null) { var exp = ExpressionTool.RemoveConvert(parameter.OppsiteExpression); - value = GetMemberValue(value, exp); + value = GetMemberValue(value, exp,out bool isConvert); var valueFullName = value?.GetType()?.FullName; if (valueFullName == "Microsoft.Extensions.Primitives.StringValues") { value = value.ToString(); + } + if (isConvert && isSetTempData == false&& exp is MemberExpression m) + { + var p = new SugarParameter($"@{m.Member.Name}"+this.Context.ParameterIndex, value); + this.Context.ParameterIndex++; + this.Context.Parameters.Add(p); + AppendMember(parameter, isLeft, p.ParameterName); + return; } } if (isSetTempData) diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs index a14ace2fb..7617ee002 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs @@ -516,7 +516,7 @@ namespace SqlSugar List result = new List(); foreach (var memItem in (value as IList)) { - result.Add(GetMemberValue(memItem, args.Last())); + result.Add(GetMemberValue(memItem, args.Last(), out bool b)); } value = result; }