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();
});
db.Queryable(db.Queryable<Order>())
.Select(it => new
{
x = SqlFunc.Subqueryable<Order>().Where(z => z.Id == it.Id).Any()
}).ToList();
}
public class UnitA001

View File

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

View File

@ -33,6 +33,7 @@ namespace SqlSugar
#endregion
#region Splicing basic
public bool IsQueryInQuery { get; set; }
public List<object> Includes { get; set; }
public List<string> IgnoreColumns { get; set; }
public bool IsCount { get; set; }
@ -641,6 +642,18 @@ namespace SqlSugar
if (this.AsTables.Any(it=>it.Key==EntityName))
{
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);
result += UtilConstants.Space;

View File

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