diff --git a/.vs/SqlSugar/v14/.suo b/.vs/SqlSugar/v14/.suo index 11cc29b44..415be49ff 100644 Binary files a/.vs/SqlSugar/v14/.suo and b/.vs/SqlSugar/v14/.suo differ diff --git a/OrmTest/ExpressionTest/Where.cs b/OrmTest/ExpressionTest/Where.cs index 86397a456..35f03ad98 100644 --- a/OrmTest/ExpressionTest/Where.cs +++ b/OrmTest/ExpressionTest/Where.cs @@ -25,6 +25,7 @@ namespace OrmTest.ExpressionTest whereSingle2(); whereSingle3(); whereSingle4(); + whereSingle5(); } base.End("Where Test"); } @@ -76,5 +77,25 @@ namespace OrmTest.ExpressionTest new SugarParameter("@Name2","a1") }, "whereSingle4"); } + private void whereSingle5() + { + string name = "a"; + WhereConst.name = "a1"; + Expression> exp = it => (it.Id > 1 && it.Name != name) || it.Name == WhereConst.name; + ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.WhereSingle); + expContext.Resolve(); + var value = expContext.Result.GetString(); + var pars = expContext.Parameters; + base.Check(value, pars, " ((( Id > @Id0 ) AND ( Name <> @Name1 )) OR ( Name = @Name2 )) ", new List() { + new SugarParameter("@Id0",1), + new SugarParameter("@Name1","a"), + new SugarParameter("@Name2","a1") + }, "whereSingle4"); + } + } + + public class WhereConst + { + public static string name { get; set; } } } diff --git a/OrmTest/bin/Debug/OrmTest.exe b/OrmTest/bin/Debug/OrmTest.exe index 76afbe780..8a6e69ff7 100644 Binary files a/OrmTest/bin/Debug/OrmTest.exe and b/OrmTest/bin/Debug/OrmTest.exe differ diff --git a/OrmTest/bin/Debug/OrmTest.pdb b/OrmTest/bin/Debug/OrmTest.pdb index 62d14e868..c527fb443 100644 Binary files a/OrmTest/bin/Debug/OrmTest.pdb and b/OrmTest/bin/Debug/OrmTest.pdb differ diff --git a/OrmTest/bin/Debug/SqlSugar.dll b/OrmTest/bin/Debug/SqlSugar.dll index be0b3eb70..51f6f1685 100644 Binary files a/OrmTest/bin/Debug/SqlSugar.dll and b/OrmTest/bin/Debug/SqlSugar.dll differ diff --git a/OrmTest/bin/Debug/SqlSugar.pdb b/OrmTest/bin/Debug/SqlSugar.pdb index a5f753855..7af73b66a 100644 Binary files a/OrmTest/bin/Debug/SqlSugar.pdb and b/OrmTest/bin/Debug/SqlSugar.pdb differ diff --git a/SqlSugar/ExpressionsToSql/ResolveItems/MemberConstExpressionResolve.cs b/SqlSugar/ExpressionsToSql/ResolveItems/MemberConstExpressionResolve.cs index ca5fe2e84..d4b75300c 100644 --- a/SqlSugar/ExpressionsToSql/ResolveItems/MemberConstExpressionResolve.cs +++ b/SqlSugar/ExpressionsToSql/ResolveItems/MemberConstExpressionResolve.cs @@ -21,6 +21,36 @@ namespace SqlSugar parameter.BaseParameter.CommonTempData = value; break; case ResolveExpressType.WhereSingle: + if (parameter.BaseExpression is BinaryExpression) + { + var otherExpression = isLeft == true ? parameter.BaseParameter.RightExpression : parameter.BaseParameter.LeftExpression; + if (otherExpression is MemberExpression) + { + string parameterName = Context.SqlParameterKeyWord + + ((MemberExpression)otherExpression).Member.Name + + Context.ParameterIndex; + base.Context.Parameters.Add(new SugarParameter(parameterName, value)); + Context.ParameterIndex++; + parameterName = string.Format(" {0} ", parameterName); + if (isLeft == true) + { + parameterName += ExpressionConst.Format1 + parameter.BaseParameter.Index; + } + if (base.Context.Result.Contains(ExpressionConst.Format0)) + { + base.Context.Result.Replace(ExpressionConst.Format0, parameterName); + } + else + { + base.Context.Result.Append(parameterName); + } + } + else + { + + } + } + break; case ResolveExpressType.WhereMultiple: case ResolveExpressType.FieldSingle: case ResolveExpressType.FieldMultiple: