mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-04-29 01:47:06 +08:00
Synchronization code
This commit is contained in:
parent
f366762273
commit
7f256b1ad6
@ -51,7 +51,7 @@ namespace SqlSugar
|
||||
{
|
||||
JoinString(parameter, expression);
|
||||
}
|
||||
else if (IsUpdateJson(parameter,expression, operatorValue))
|
||||
else if (IsUpdateJson(parameter, expression, operatorValue))
|
||||
{
|
||||
parameter.CommonTempData = "IsJson=true";
|
||||
DefaultBinary(parameter, expression, operatorValue);
|
||||
@ -63,11 +63,39 @@ namespace SqlSugar
|
||||
DefaultBinary(parameter, expression, operatorValue);
|
||||
parameter.CommonTempData = null;
|
||||
}
|
||||
else if (IsBinaryGroup(operatorValue,expression))
|
||||
{
|
||||
var isComparisonOperator = ExpressionTool.IsComparisonOperator(expression);
|
||||
var getLeft=GetNewExpressionValue(expression.Left);
|
||||
var getRight = GetNewExpressionValue(expression.Right);
|
||||
base.Context.Result.Append($"( {getLeft} {operatorValue} {getRight} )");
|
||||
}
|
||||
else
|
||||
{
|
||||
DefaultBinary(parameter, expression, operatorValue);
|
||||
}
|
||||
}
|
||||
|
||||
private bool IsBinaryGroup(string operatorValue, BinaryExpression expression)
|
||||
{
|
||||
var left = ExpressionTool.RemoveConvert(expression.Left);
|
||||
var right = ExpressionTool.RemoveConvert(expression.Right);
|
||||
if (operatorValue?.IsIn("AND","OR")==true&&left is BinaryExpression&& right is BinaryExpression)
|
||||
{
|
||||
|
||||
var leftChild = ExpressionTool.RemoveConvert((left as BinaryExpression).Right);
|
||||
var rightChild = ExpressionTool.RemoveConvert((right as BinaryExpression).Right);
|
||||
if (ExpressionTool.GetMethodName(leftChild)=="Select"
|
||||
&& ExpressionTool.GetMethodName(rightChild) == "Select"
|
||||
&& ExpressionTool.ContainsMethodName(left as BinaryExpression, "Group")
|
||||
&&ExpressionTool.ContainsMethodName(right as BinaryExpression, "Group"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private bool IsUpdateArray(ExpressionParameter parameter, BinaryExpression expression, string operatorValue)
|
||||
{
|
||||
var isOk = parameter.Context.ResolveType == ResolveExpressType.WhereSingle && operatorValue == "=" && (expression.Left is MemberExpression) && expression.Left.Type.IsClass();
|
||||
|
Loading…
Reference in New Issue
Block a user