mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-10-15 18:55:07 +08:00
Update Expression To Sql
This commit is contained in:
@@ -446,7 +446,7 @@ namespace OrmTest.Demo
|
|||||||
x =p
|
x =p
|
||||||
}).ToList();
|
}).ToList();
|
||||||
var test46 = db.Queryable<Student>().Where(it => it.CreateTime > SqlFunc.ToDate(DateTime.Now.Date)).ToList();
|
var test46 = db.Queryable<Student>().Where(it => it.CreateTime > SqlFunc.ToDate(DateTime.Now.Date)).ToList();
|
||||||
//var test47 = db.Queryable<Student>().Where(it =>string.IsNullOrEmpty(it.Name)==true).ToList();
|
var test47 = db.Queryable<Student>().Where(it =>string.IsNullOrEmpty(it.Name)==true).ToList();
|
||||||
}
|
}
|
||||||
public static void Page()
|
public static void Page()
|
||||||
{
|
{
|
||||||
|
@@ -249,12 +249,13 @@ namespace SqlSugar
|
|||||||
model.Args.AddRange(appendArgs);
|
model.Args.AddRange(appendArgs);
|
||||||
}
|
}
|
||||||
var methodValue = GetMethodValue(name, model);
|
var methodValue = GetMethodValue(name, model);
|
||||||
if (parameter.BaseExpression is BinaryExpression && parameter.OppsiteExpression.Type == UtilConstants.BoolType&&name=="HasValue"&&!(parameter.OppsiteExpression is BinaryExpression)&& !(parameter.OppsiteExpression is MethodCallExpression && parameter.OppsiteExpression.Type == UtilConstants.BoolType)) {
|
if (parameter.BaseExpression is BinaryExpression && parameter.OppsiteExpression.Type == UtilConstants.BoolType&&name=="HasValue"&&!(parameter.OppsiteExpression is BinaryExpression)&& !(parameter.OppsiteExpression is MethodCallExpression && parameter.OppsiteExpression.Type == UtilConstants.BoolType))
|
||||||
methodValue = this.Context.DbMehtods.CaseWhen(new List<KeyValuePair<string, string>>() {
|
{
|
||||||
new KeyValuePair<string, string>("IF",methodValue.ObjToString()),
|
methodValue = packIfElse(methodValue);
|
||||||
new KeyValuePair<string, string>("Return","1"),
|
}
|
||||||
new KeyValuePair<string, string>("End","0")
|
if (parameter.OppsiteExpression != null&&name == "IsNullOrEmpty" && parameter.OppsiteExpression.Type == UtilConstants.BoolType&& parameter.OppsiteExpression is ConstantExpression)
|
||||||
});
|
{
|
||||||
|
methodValue = packIfElse(methodValue);
|
||||||
}
|
}
|
||||||
var isRoot = contextIndex == 2;
|
var isRoot = contextIndex == 2;
|
||||||
if (isRoot && parameter.BaseExpression == null &&this.Context.ResolveType.IsIn(ResolveExpressType.WhereMultiple,ResolveExpressType.WhereSingle)&& (parameter.CurrentExpression is MethodCallExpression) && ((parameter.CurrentExpression as MethodCallExpression).Method.Name.IsIn("ToBool", "ToBoolean")))
|
if (isRoot && parameter.BaseExpression == null &&this.Context.ResolveType.IsIn(ResolveExpressType.WhereMultiple,ResolveExpressType.WhereSingle)&& (parameter.CurrentExpression is MethodCallExpression) && ((parameter.CurrentExpression as MethodCallExpression).Method.Name.IsIn("ToBool", "ToBoolean")))
|
||||||
@@ -284,6 +285,16 @@ namespace SqlSugar
|
|||||||
base.AppendValue(parameter, isLeft, methodValue);
|
base.AppendValue(parameter, isLeft, methodValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private object packIfElse(object methodValue)
|
||||||
|
{
|
||||||
|
methodValue = this.Context.DbMehtods.CaseWhen(new List<KeyValuePair<string, string>>() {
|
||||||
|
new KeyValuePair<string, string>("IF",methodValue.ObjToString()),
|
||||||
|
new KeyValuePair<string, string>("Return","1"),
|
||||||
|
new KeyValuePair<string, string>("End","0")
|
||||||
|
});
|
||||||
|
return methodValue;
|
||||||
|
}
|
||||||
|
|
||||||
private void AppendItem(ExpressionParameter parameter, string name, IEnumerable<Expression> args, MethodCallExpressionModel model, Expression item)
|
private void AppendItem(ExpressionParameter parameter, string name, IEnumerable<Expression> args, MethodCallExpressionModel model, Expression item)
|
||||||
{
|
{
|
||||||
var isBinaryExpression = item is BinaryExpression || item is MethodCallExpression;
|
var isBinaryExpression = item is BinaryExpression || item is MethodCallExpression;
|
||||||
|
Reference in New Issue
Block a user