From bc627236c4c284f52d62d24564ad3f1ba0eaaf87 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Thu, 13 Jul 2017 22:38:02 +0800 Subject: [PATCH] - --- .../UnitTest/ExpressionTest/Where.cs | 41 ++++++++++++++++ .../ResolveItems/MemberExpressionResolve.cs | 46 ++++++++++-------- .../SqliteTest/DataBase/SqlSugar4xTest.sqlite | Bin 98304 -> 102400 bytes 3 files changed, 67 insertions(+), 20 deletions(-) diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/ExpressionTest/Where.cs b/Src/Asp.Net/SqlServerTest/UnitTest/ExpressionTest/Where.cs index e70d21e29..32b4328fc 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/ExpressionTest/Where.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/ExpressionTest/Where.cs @@ -21,6 +21,10 @@ namespace OrmTest.UnitTest base.Begin(); for (int i = 0; i < base.Count; i++) { + + whereSingle21(); + whereSingle20(); + whereSingle19(); whereSingle18(); whereSingle17(); whereSingle16(); @@ -308,6 +312,43 @@ namespace OrmTest.UnitTest }, "whereSingle18"); } + private void whereSingle19() + { + Expression> exp = it => it.Bool2.Value==false; + SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + expContext.Resolve(exp, ResolveExpressType.WhereSingle); + var value = expContext.Result.GetString(); + var pars = expContext.Parameters; + base.Check(value, pars, "( [Bool2] = @Value0 )", new List() + { + new SugarParameter("@Value0",false) + }, "whereSingle19"); + } + private void whereSingle20() + { + Expression> exp = it => it.Bool2.Value == it.Bool1; + SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + expContext.Resolve(exp, ResolveExpressType.WhereSingle); + var value = expContext.Result.GetString(); + var pars = expContext.Parameters; + base.Check(value, pars, "( [Bool2] = [Bool1] )", new List() + { + + }, "whereSingle19"); + } + + private void whereSingle21() + { + //Expression> exp = it => it.Bool2.Value; + //SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + //expContext.Resolve(exp, ResolveExpressType.WhereSingle); + //var value = expContext.Result.GetString(); + //var pars = expContext.Parameters; + //base.Check(value, pars, "( 1 = 2 )", new List() + //{ + + //}, "whereSingle21"); + } } public class WhereConst diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs index 6a0cbc297..8c9f3a675 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs @@ -14,8 +14,13 @@ namespace SqlSugar var isLeft = parameter.IsLeft; var isSetTempData = baseParameter.CommonTempData.IsValuable() && baseParameter.CommonTempData.Equals(CommonTempDataType.Result); var expression = base.Expression as MemberExpression; - if (expression.Expression != null&& expression.Expression.NodeType!= ExpressionType.Parameter) { - var value= ExpressionTool.GetMemberValue(expression.Member, expression); + if (expression.Member.Name == "Value" && expression.Member.GetType().Name == "RuntimePropertyInfo") + { + expression = expression.Expression as MemberExpression; + } + else if (expression.Expression != null && expression.Expression.NodeType != ExpressionType.Parameter) + { + var value = ExpressionTool.GetMemberValue(expression.Member, expression); if (isSetTempData) { baseParameter.CommonTempData = value; @@ -31,7 +36,7 @@ namespace SqlSugar switch (parameter.Context.ResolveType) { case ResolveExpressType.SelectSingle: - fieldName = getSingleName(parameter, expression, isLeft); + fieldName = GetSingleName(parameter, expression, isLeft); if (isSetTempData) { baseParameter.CommonTempData = fieldName; @@ -42,7 +47,7 @@ namespace SqlSugar } break; case ResolveExpressType.SelectMultiple: - fieldName = getMultipleName(parameter, expression, isLeft); + fieldName = GetMultipleName(parameter, expression, isLeft); if (isSetTempData) { baseParameter.CommonTempData = fieldName; @@ -55,40 +60,41 @@ namespace SqlSugar case ResolveExpressType.WhereSingle: if (isSetTempData) { - fieldName = getSingleName(parameter, expression, null); + fieldName = GetSingleName(parameter, expression, null); baseParameter.CommonTempData = fieldName; } else { - fieldName = getSingleName(parameter, expression, isLeft); - if (expression.Type == PubConst.BoolType&&baseParameter.OperatorValue.IsNullOrEmpty()) { - fieldName= "( "+fieldName+"=1 )"; + fieldName = GetSingleName(parameter, expression, isLeft); + if (expression.Type == PubConst.BoolType && baseParameter.OperatorValue.IsNullOrEmpty()) + { + fieldName = "( " + fieldName + "=1 )"; } fieldName = AppendMember(parameter, isLeft, fieldName); - } + } break; case ResolveExpressType.WhereMultiple: if (isSetTempData) { - fieldName = getMultipleName(parameter, expression, null); + fieldName = GetMultipleName(parameter, expression, null); baseParameter.CommonTempData = fieldName; } else { - fieldName = getMultipleName(parameter, expression, isLeft); + fieldName = GetMultipleName(parameter, expression, isLeft); fieldName = AppendMember(parameter, isLeft, fieldName); } break; case ResolveExpressType.FieldSingle: - fieldName = getSingleName(parameter, expression, isLeft); + fieldName = GetSingleName(parameter, expression, isLeft); base.Context.Result.Append(fieldName); break; case ResolveExpressType.FieldMultiple: - fieldName = getMultipleName(parameter, expression, isLeft); + fieldName = GetMultipleName(parameter, expression, isLeft); base.Context.Result.Append(fieldName); break; case ResolveExpressType.ArraySingle: - fieldName = getArrayName(parameter, expression, isLeft); + fieldName = GetArrayName(parameter, expression, isLeft); base.Context.Result.Append(fieldName); break; default: @@ -98,7 +104,7 @@ namespace SqlSugar private string AppendMember(ExpressionParameter parameter, bool? isLeft, string fieldName) { - if (parameter.BaseExpression is BinaryExpression|| (parameter.BaseParameter.CommonTempData!=null&¶meter.BaseParameter.CommonTempData.Equals(CommonTempDataType.Append))) + if (parameter.BaseExpression is BinaryExpression || (parameter.BaseParameter.CommonTempData != null && parameter.BaseParameter.CommonTempData.Equals(CommonTempDataType.Append))) { fieldName = string.Format(" {0} ", fieldName); if (isLeft == true) @@ -122,23 +128,23 @@ namespace SqlSugar return fieldName; } - private string getMultipleName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft) + private string GetMultipleName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft) { string shortName = expression.Expression.ToString(); string fieldName = expression.Member.Name; - fieldName=this.Context.GetDbColumnName(expression.Expression.Type.Name, fieldName); - fieldName =Context.GetTranslationColumnName(shortName + "." + fieldName); + fieldName = this.Context.GetDbColumnName(expression.Expression.Type.Name, fieldName); + fieldName = Context.GetTranslationColumnName(shortName + "." + fieldName); return fieldName; } - private string getSingleName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft) + private string GetSingleName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft) { string fieldName = expression.Member.Name; fieldName = this.Context.GetDbColumnName(expression.Expression.Type.Name, fieldName); fieldName = Context.GetTranslationColumnName(fieldName); return fieldName; } - private string getArrayName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft) + private string GetArrayName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft) { string fieldName = expression.Member.Name; return fieldName; diff --git a/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/DataBase/SqlSugar4xTest.sqlite b/Src/Asp.NetCore/SqlServerTest/src/SqliteTest/DataBase/SqlSugar4xTest.sqlite index bb194be75c343b833a2d1b34bcdb644b3cc270d6..9bdbe55401a02e45f206263772781c7f427e7e01 100644 GIT binary patch literal 102400 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%0DKIWr{{`WB-MfAUq`6#0QeauG@{qMsc5&iFD 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 S{U5~sp#Ou|AM}6Fvi?7ZE@37B literal 98304 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 Nfc>l^`9Fw){{tOIZxjFk