From f5daf86eebff62a7ad04b28eddeca062b5e3528f Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Thu, 29 Feb 2024 13:26:58 +0800 Subject: [PATCH] Update exp to sql --- .../ResolveItems/MemberExpressionResolve.cs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs index bf59542d6..8b23a5b77 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs @@ -19,6 +19,7 @@ namespace SqlSugar bool isSetTempData, isValue, isValueBool, isLength, isDateValue, isHasValue, isDateDate, isMemberValue, isSingle, fieldIsBool, isSelectField, isField; SettingParameters(parameter, out baseParameter, out expression, out isLeft, out isSetTempData, out isValue, out isValueBool, out isLength, out isDateValue, out isHasValue, out isDateDate, out isMemberValue, out isSingle, out fieldIsBool, out isSelectField, out isField); baseParameter.ChildExpression = expression; + ProcessNavigationMemberAndUpdateExpression(ref expression, ref isValue); if (isLength) { ResolveLength(parameter, isLeft, expression); @@ -47,7 +48,7 @@ namespace SqlSugar { ResolveCallValue(parameter, baseParameter, expression, isLeft, isSetTempData, isSingle); } - else if (isValue & IsNavValue(expression)) + else if (isValue & IsNavValue(expression)) { expression = expression.Expression as MemberExpression; ResolveMemberValue(parameter, baseParameter, expression, isLeft, isSetTempData); @@ -82,6 +83,21 @@ namespace SqlSugar } } + private void ProcessNavigationMemberAndUpdateExpression(ref MemberExpression expression, ref bool isValue) + { + if (isValue && expression.Expression is MemberExpression childMemExp) + { + if (childMemExp.Expression is MemberExpression navMemExp) + { + if (ExpressionTool.IsNavMember(this.Context, navMemExp)) + { + expression = childMemExp; + isValue = false; + } + } + } + } + #region Navigate