mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-25 10:08:11 +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 != null &&
|
||||||
((item as UnaryExpression).Operand as MemberExpression).Expression.NodeType == ExpressionType.Parameter;
|
((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)
|
protected bool IsSubMethod(MethodCallExpression express)
|
||||||
{
|
{
|
||||||
|
@ -80,6 +80,17 @@ namespace SqlSugar
|
|||||||
base.Context.Result.CurrentParameter = null;
|
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))
|
else if (IsMethod(item))
|
||||||
{
|
{
|
||||||
if (item is UnaryExpression)
|
if (item is UnaryExpression)
|
||||||
|
@ -41,6 +41,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
AppendNotMember(parameter,nodeType);
|
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())
|
else if (base.Expression is BinaryExpression || parameter.BaseExpression is BinaryExpression || baseParameter.CommonTempData.ObjToString() == CommonTempDataType.Append.ToString())
|
||||||
{
|
{
|
||||||
Append(parameter, nodeType);
|
Append(parameter, nodeType);
|
||||||
@ -156,5 +160,25 @@ namespace SqlSugar
|
|||||||
parameter.CommonTempData = null;
|
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