From bf95ccb90db92b3f0a0336a71c3e14e7071d239a Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sat, 22 Mar 2025 18:05:49 +0800 Subject: [PATCH] Update exp to sql --- .../ExpressionsToSql/Common/ExpressionTool.cs | 19 ++++++++++++++++++- .../SqlSugar/SqlSugarForCore.nuspec | 2 +- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs index f23096c0a..91d4d7158 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs @@ -5,7 +5,7 @@ using System.Globalization; using System.Linq; using System.Linq.Expressions; using System.Reflection; -using System.Text; + using System.Text; namespace SqlSugar { public class ExpressionTool @@ -878,7 +878,24 @@ namespace SqlSugar additem.ShortName = member.Expression + ""; additem.RightName = member.Member.Name; additem.RightDbName = context.GetDbColumnName(entityName, additem.RightName); + var isNavMember = member.Expression != null + && ExpressionTool.IsNavMember(context, member.Expression); additem.LeftNameName = member.Member.Name; + if (isNavMember && (context?.SugarContext?.QueryBuilder?.JoinQueryInfos?.Count()??0)==0) + { + var exp = context.GetCopyContextWithMapping(); + exp.Resolve(member, ResolveExpressType.FieldSingle); + var sql = exp.Result.GetResultString(); + if (context.IsSingle&& context.CurrentShortName.IsNullOrEmpty()) + { + context.SingleTableNameSubqueryShortName=ExpressionTool.GetParameters(member)?.FirstOrDefault()?.Name; + } + additem.RightDbName = sql; + } + else if (isNavMember && context?.SugarContext?.QueryBuilder?.JoinQueryInfos?.Any(it=>it.ShortName?.StartsWith("pnv_" + ExpressionTool.GetMemberName(member.Expression)) ==true)==true) + { + additem.ShortName = "pnv_"+ExpressionTool.GetMemberName(member.Expression); + } //additem.Value = ""; result.Add(additem); } diff --git a/Src/Asp.NetCore2/SqlSugar/SqlSugarForCore.nuspec b/Src/Asp.NetCore2/SqlSugar/SqlSugarForCore.nuspec index 575c6d966..92e40ba4f 100644 --- a/Src/Asp.NetCore2/SqlSugar/SqlSugarForCore.nuspec +++ b/Src/Asp.NetCore2/SqlSugar/SqlSugarForCore.nuspec @@ -2,7 +2,7 @@ SqlSugarCore - 5.1.4.186-preview04 + 5.1.4.186-preview06 sunkaixuan 果糖大数据科技 http://www.apache.org/licenses/LICENSE-2.0.html