mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-23 22:11:36 +08:00
Update exp to sql
This commit is contained in:
parent
07ede27242
commit
cb954fbf4b
@ -500,6 +500,15 @@ namespace SqlSugar
|
||||
((item as UnaryExpression).Operand as MemberExpression).Expression != null &&
|
||||
((item as UnaryExpression).Operand as MemberExpression).Expression.NodeType == ExpressionType.Parameter;
|
||||
}
|
||||
protected static bool IsNotParameter(Expression item)
|
||||
{
|
||||
return item is UnaryExpression &&
|
||||
item.Type == UtilConstants.BoolType &&
|
||||
(item as UnaryExpression).NodeType == ExpressionType.Not &&
|
||||
(item as UnaryExpression).Operand is MemberExpression &&
|
||||
((item as UnaryExpression).Operand as MemberExpression).Expression != null &&
|
||||
((item as UnaryExpression).Operand as MemberExpression).Expression.NodeType == ExpressionType.MemberAccess;
|
||||
}
|
||||
|
||||
protected bool IsSubMethod(MethodCallExpression express)
|
||||
{
|
||||
|
@ -80,6 +80,17 @@ namespace SqlSugar
|
||||
base.Context.Result.CurrentParameter = null;
|
||||
}
|
||||
}
|
||||
else if (IsNotParameter(item))
|
||||
{
|
||||
try
|
||||
{
|
||||
parameter.Context.Result.Append(base.Context.GetEqString(memberName,AppendParameter(ExpressionTool.DynamicInvoke(item).ObjToBool())));
|
||||
}
|
||||
catch
|
||||
{
|
||||
throw new NotSupportedException(item.ToString());
|
||||
}
|
||||
}
|
||||
else if (IsMethod(item))
|
||||
{
|
||||
if (item is UnaryExpression)
|
||||
|
@ -41,6 +41,10 @@ namespace SqlSugar
|
||||
{
|
||||
AppendNotMember(parameter,nodeType);
|
||||
}
|
||||
else if (baseParameter.OperatorValue == "=" && IsNotParameter(oldExpression))
|
||||
{
|
||||
AppendNotParameter(parameter, nodeType);
|
||||
}
|
||||
else if (base.Expression is BinaryExpression || parameter.BaseExpression is BinaryExpression || baseParameter.CommonTempData.ObjToString() == CommonTempDataType.Append.ToString())
|
||||
{
|
||||
Append(parameter, nodeType);
|
||||
@ -156,5 +160,25 @@ namespace SqlSugar
|
||||
parameter.CommonTempData = null;
|
||||
}
|
||||
|
||||
|
||||
private void AppendNotParameter(ExpressionParameter parameter, ExpressionType nodeType)
|
||||
{
|
||||
BaseParameter.ChildExpression = base.Expression;
|
||||
this.IsLeft = parameter.IsLeft;
|
||||
parameter.CommonTempData = CommonTempDataType.Result;
|
||||
base.Start();
|
||||
var result = this.Context.DbMehtods.IIF(new MethodCallExpressionModel()
|
||||
{
|
||||
Args = new List<MethodCallExpressionArgs>() {
|
||||
new MethodCallExpressionArgs(){ IsMember=true, MemberName=AppendParameter(parameter.CommonTempData)+"=1" },
|
||||
new MethodCallExpressionArgs(){ IsMember=true,MemberName=AppendParameter(0) },
|
||||
new MethodCallExpressionArgs(){ IsMember=true, MemberName=AppendParameter(1) }
|
||||
}
|
||||
});
|
||||
this.Context.Result.Append(result);
|
||||
parameter.BaseParameter.ChildExpression = base.Expression;
|
||||
parameter.CommonTempData = null;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user