Update query in query select subquery bug

This commit is contained in:
sunkaixuan 2022-04-23 12:12:14 +08:00
parent 4dfa4e85ea
commit 4186e0820e
4 changed files with 20 additions and 0 deletions

View File

@ -142,6 +142,11 @@ namespace OrmTest
{ {
it.UnitA002 = db.Queryable<UnitA002>().SetContext(x => x.orgid, () => it.id, it).First(); it.UnitA002 = db.Queryable<UnitA002>().SetContext(x => x.orgid, () => it.id, it).First();
}); });
db.Queryable(db.Queryable<Order>())
.Select(it => new
{
x = SqlFunc.Subqueryable<Order>().Where(z => z.Id == it.Id).Any()
}).ToList();
} }
public class UnitA001 public class UnitA001

View File

@ -2943,6 +2943,7 @@ namespace SqlSugar
_Size=it._Size _Size=it._Size
}).ToList(); }).ToList();
} }
asyncQueryableBuilder.IsQueryInQuery = this.QueryBuilder.IsQueryInQuery;
asyncQueryableBuilder.Includes = this.QueryBuilder.Includes; asyncQueryableBuilder.Includes = this.QueryBuilder.Includes;
asyncQueryableBuilder.Take = this.QueryBuilder.Take; asyncQueryableBuilder.Take = this.QueryBuilder.Take;
asyncQueryableBuilder.Skip = this.QueryBuilder.Skip; asyncQueryableBuilder.Skip = this.QueryBuilder.Skip;

View File

@ -33,6 +33,7 @@ namespace SqlSugar
#endregion #endregion
#region Splicing basic #region Splicing basic
public bool IsQueryInQuery { get; set; }
public List<object> Includes { get; set; } public List<object> Includes { get; set; }
public List<string> IgnoreColumns { get; set; } public List<string> IgnoreColumns { get; set; }
public bool IsCount { get; set; } public bool IsCount { get; set; }
@ -641,6 +642,18 @@ namespace SqlSugar
if (this.AsTables.Any(it=>it.Key==EntityName)) if (this.AsTables.Any(it=>it.Key==EntityName))
{ {
name = this.AsTables.FirstOrDefault(it => it.Key == EntityName).Value; name = this.AsTables.FirstOrDefault(it => it.Key == EntityName).Value;
if (this.IsQueryInQuery && this.SelectValue != null && this.SelectValue is Expression)
{
if (this.SelectValue.ToString().Contains("Subqueryable()")&& name.TrimStart().StartsWith("("))
{
var oldName = name;
name = Regex.Match(name, @"\(.+\)").Value;
if (name.IsNullOrEmpty())
{
name = oldName;
}
}
}
} }
var result = Builder.GetTranslationTableName(name); var result = Builder.GetTranslationTableName(name);
result += UtilConstants.Space; result += UtilConstants.Space;

View File

@ -346,6 +346,7 @@ namespace SqlSugar
var result= this.Context.Queryable<T>(queryable); var result= this.Context.Queryable<T>(queryable);
var QueryBuilder = queryable.QueryBuilder; var QueryBuilder = queryable.QueryBuilder;
result.QueryBuilder.IsQueryInQuery = true;
result.QueryBuilder.WhereIndex = QueryBuilder.WhereIndex++; result.QueryBuilder.WhereIndex = QueryBuilder.WhereIndex++;
result.QueryBuilder.LambdaExpressions.ParameterIndex = QueryBuilder.LambdaExpressions.ParameterIndex++; result.QueryBuilder.LambdaExpressions.ParameterIndex = QueryBuilder.LambdaExpressions.ParameterIndex++;
result.QueryBuilder.LambdaExpressions.Index = QueryBuilder.LambdaExpressions.Index++; result.QueryBuilder.LambdaExpressions.Index = QueryBuilder.LambdaExpressions.Index++;