diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubAnd.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubAnd.cs index 1058d6bb4..042615fdf 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubAnd.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubAnd.cs @@ -41,7 +41,13 @@ namespace SqlSugar { var exp = expression as MethodCallExpression; var argExp = exp.Arguments[0]; - var result = "AND " + SubTools.GetMethodValue(this.Context, argExp, ResolveExpressType.WhereMultiple); + var copyContext = this.Context; + if (this.Context.JoinIndex > 0) + { + copyContext = this.Context.GetCopyContextWithMapping(); + copyContext.IsSingle = false; + } + var result = "AND " + SubTools.GetMethodValue(copyContext, argExp, ResolveExpressType.WhereMultiple); var regex = @"^AND (\@Const\d+) $"; diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubInnerJoin.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubInnerJoin.cs index ae7675d7a..06263ac04 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubInnerJoin.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubInnerJoin.cs @@ -45,7 +45,10 @@ namespace SqlSugar var argExp = exp.Arguments[0]; var name =this.Context.GetTranslationColumnName((argExp as LambdaExpression).Parameters[0].Name); var parameter = (argExp as LambdaExpression).Parameters.Last(); - Context.InitMappingInfo(parameter.Type); + foreach (var item in (argExp as LambdaExpression).Parameters) + { + Context.InitMappingInfo(item.Type); + } this.Context.RefreshMapping(); var tableName= Context.GetTranslationTableName(parameter.Type.Name, true); var joinString =string.Format(" {2} INNER JOIN {1} {0} ", diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubLeftJoin.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubLeftJoin.cs index 79cb43780..058846b9b 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubLeftJoin.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubLeftJoin.cs @@ -45,7 +45,10 @@ namespace SqlSugar var argExp = exp.Arguments[0]; var name =this.Context.GetTranslationColumnName((argExp as LambdaExpression).Parameters[0].Name); var parameter = (argExp as LambdaExpression).Parameters.Last(); - Context.InitMappingInfo(parameter.Type); + foreach (var item in (argExp as LambdaExpression).Parameters) + { + Context.InitMappingInfo(item.Type); + } this.Context.RefreshMapping(); var tableName= Context.GetTranslationTableName(parameter.Type.Name, true); var joinString =string.Format(" {2} LEFT JOIN {1} {0} ", diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubWhere.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubWhere.cs index 2fb7a847d..35d404c7e 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubWhere.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubWhere.cs @@ -45,7 +45,13 @@ namespace SqlSugar new SubSelect() { Context = this.Context }.SetShortName(exp, "+"); } var argExp = exp.Arguments[0]; - var result = "WHERE " + SubTools.GetMethodValue(Context, argExp, ResolveExpressType.WhereMultiple); + var copyContext = this.Context; + if (this.Context.JoinIndex > 0) + { + copyContext = this.Context.GetCopyContextWithMapping(); + copyContext.IsSingle = false; + } + var result = "WHERE " + SubTools.GetMethodValue(copyContext, argExp, ResolveExpressType.WhereMultiple);