mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 02:32:50 +08:00
- 优化 Lambda bool 解析;#1219
This commit is contained in:
parent
c11718be85
commit
c51cffc2c2
@ -802,14 +802,3 @@
|
|||||||
</member>
|
</member>
|
||||||
</members>
|
</members>
|
||||||
</doc>
|
</doc>
|
||||||
Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{FreeSql.FluentDataFilter},System.Reflection.Assembly[])">
|
|
||||||
<summary>
|
|
||||||
批量注入 Repository,可以参考代码自行调整
|
|
||||||
</summary>
|
|
||||||
<param name="services"></param>
|
|
||||||
<param name="globalDataFilter"></param>
|
|
||||||
<param name="assemblies"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
</members>
|
|
||||||
</doc>
|
|
||||||
|
@ -128,6 +128,10 @@ WHERE (a.""Bool"" = 0 AND a.""Id"" > 0 AND a.""Bool"" = 0)", sql);
|
|||||||
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
|
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
|
||||||
FROM ""IIFTest01Model"" a
|
FROM ""IIFTest01Model"" a
|
||||||
WHERE (a.""Bool"" = 1 AND a.""Id"" > 0 AND a.""Bool"" = 1)", sql);
|
WHERE (a.""Bool"" = 1 AND a.""Id"" > 0 AND a.""Bool"" = 1)", sql);
|
||||||
|
sql = fsql.Select<IIFTest01Model>().Where(a => a.Bool && a.Id > 0 || a.Bool).ToSql();
|
||||||
|
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
|
||||||
|
FROM ""IIFTest01Model"" a
|
||||||
|
WHERE ((a.""Bool"" = 1 AND a.""Id"" > 0 OR a.""Bool"" = 1))", sql);
|
||||||
|
|
||||||
sql = fsql.Select<IIFTest01Model>().Where(a => a.BoolNullable == true && a.Id > 0 && a.BoolNullable == true).ToSql();
|
sql = fsql.Select<IIFTest01Model>().Where(a => a.BoolNullable == true && a.Id > 0 && a.BoolNullable == true).ToSql();
|
||||||
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
|
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
|
||||||
|
@ -754,7 +754,16 @@ namespace FreeSql.Internal
|
|||||||
return ExpressionLambdaToSql(Expression.Call(leftExp, MethodDateTimeSubtractTimeSpan, rightExp), tsc);
|
return ExpressionLambdaToSql(Expression.Call(leftExp, MethodDateTimeSubtractTimeSpan, rightExp), tsc);
|
||||||
}
|
}
|
||||||
if (oper == "OR")
|
if (oper == "OR")
|
||||||
return $"({GetBoolString(ExpressionLambdaToSql(leftExp, tsc))} {oper} {GetBoolString(ExpressionLambdaToSql(rightExp, tsc))})";
|
{
|
||||||
|
var leftBool = ExpressionLambdaToSql(leftExp, tsc);
|
||||||
|
if (SearchColumnByField(tsc._tables, tsc.currentTable, leftBool) != null) leftBool = $"{leftBool} = {formatSql(true, null, null, null)}";
|
||||||
|
else leftBool = GetBoolString(leftBool);
|
||||||
|
|
||||||
|
var rightBool = ExpressionLambdaToSql(rightExp, tsc);
|
||||||
|
if (SearchColumnByField(tsc._tables, tsc.currentTable, rightBool) != null) rightBool = $"{rightBool} = {formatSql(true, null, null, null)}";
|
||||||
|
else rightBool = GetBoolString(rightBool);
|
||||||
|
return $"({leftBool} {oper} {rightBool})";
|
||||||
|
}
|
||||||
return $"({ExpressionLambdaToSql(leftExp, tsc)} {oper} {ExpressionLambdaToSql(rightExp, tsc)})";
|
return $"({ExpressionLambdaToSql(leftExp, tsc)} {oper} {ExpressionLambdaToSql(rightExp, tsc)})";
|
||||||
case "=":
|
case "=":
|
||||||
case "<>":
|
case "<>":
|
||||||
|
Loading…
x
Reference in New Issue
Block a user