Subquery Bug

This commit is contained in:
sunkaixuan 2017-09-19 13:23:35 +08:00
parent b7d5bd48d9
commit 9d2a67dd7a
3 changed files with 12 additions and 2 deletions

View File

@ -116,6 +116,14 @@ namespace OrmTest.UnitTest
var t12 = db.Queryable<Student>().Where(it=>it.Id!=null).ToSql();
base.Check("SELECT [ID],[SchoolId],[Name],[CreateTime] FROM [STudent] WHERE ( [ID] IS NOT NULL )", null, t12.Key, t12.Value, "single t12 error");
var id = 1;
var t13 = db.Queryable<Student>().Where(it => SqlFunc.Subqueryable<School>().Where(s => s.Id == it.Id&&s.Id==id).Max(s => s.Id) == 1).ToSql();
base.Check("SELECT [ID],[SchoolId],[Name],[CreateTime] FROM [STudent] it WHERE ((SELECT MAX([Id]) FROM [School] WHERE (( [Id] = [it].[ID] ) AND ( [Id] = @Id0 ))) = @Const1 )",
new List<SugarParameter>() {
new SugarParameter("@Id0",1),
new SugarParameter("@Const1",1)
}, t13.Key, t13.Value, "single t13 error ");
}
}
}

View File

@ -35,7 +35,7 @@ namespace SqlSugar
{
var exp = expression as MethodCallExpression;
var argExp= exp.Arguments[0];
var result= "WHERE "+SubTools.GetMethodValue(Context, argExp, ResolveExpressType.WhereMultiple);
var result= "WHERE "+SubTools.GetMethodValue(Context, argExp, ResolveExpressType.WhereMultiple);;
var selfParameterName = Context.GetTranslationColumnName((argExp as LambdaExpression).Parameters.First().Name)+UtilConstants.Dot;
result = result.Replace(selfParameterName,string.Empty);
return result;

View File

@ -11,7 +11,7 @@ namespace SqlSugar
public static List<ISubOperation> SubItems(ExpressionContext Context)
{
return new List<ISubOperation>()
return new List<ISubOperation>()
{
new SubSelect() { Context=Context },
new SubWhere(){ Context=Context },
@ -37,6 +37,8 @@ namespace SqlSugar
newContext.Resolve(item, type);
context.Index = newContext.Index;
context.ParameterIndex = newContext.ParameterIndex;
if (newContext.Parameters.IsValuable())
context.Parameters.AddRange(newContext.Parameters);
return newContext.Result.GetResultString();
}
}