mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2026-02-25 04:27:14 +08:00
-
This commit is contained in:
@@ -98,52 +98,59 @@ namespace SqlSugar
|
||||
return null;
|
||||
}
|
||||
|
||||
protected void AppendParameter(ExpressionParameter parameter, bool? isLeft, object value)
|
||||
protected void AppendValue(ExpressionParameter parameter, bool? isLeft, object value)
|
||||
{
|
||||
if (parameter.BaseExpression is BinaryExpression)
|
||||
{
|
||||
var otherExpression = isLeft == true ? parameter.BaseParameter.RightExpression : parameter.BaseParameter.LeftExpression;
|
||||
if (otherExpression is MemberExpression)
|
||||
{
|
||||
string parameterName = Context.SqlParameterKeyWord
|
||||
string appendValue = Context.SqlParameterKeyWord
|
||||
+ ((MemberExpression)otherExpression).Member.Name
|
||||
+ Context.ParameterIndex;
|
||||
this.Context.Parameters.Add(new SugarParameter(parameterName, value));
|
||||
this.Context.Parameters.Add(new SugarParameter(appendValue, value));
|
||||
Context.ParameterIndex++;
|
||||
parameterName = string.Format(" {0} ", parameterName);
|
||||
appendValue = string.Format(" {0} ", appendValue);
|
||||
if (isLeft == true)
|
||||
{
|
||||
parameterName += ExpressionConst.Format1 + parameter.BaseParameter.Index;
|
||||
appendValue += ExpressionConst.Format1 + parameter.BaseParameter.Index;
|
||||
}
|
||||
if (this.Context.Result.Contains(ExpressionConst.Format0))
|
||||
{
|
||||
this.Context.Result.Replace(ExpressionConst.Format0, parameterName);
|
||||
this.Context.Result.Replace(ExpressionConst.Format0, appendValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Context.Result.Append(parameterName);
|
||||
this.Context.Result.Append(appendValue);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var parameterName =this.Context.SqlParameterKeyWord+ExpressionConst.CONST +Context.ParameterIndex;
|
||||
var appendValue =this.Context.SqlParameterKeyWord+ExpressionConst.CONST +Context.ParameterIndex;
|
||||
Context.ParameterIndex++;
|
||||
this.Context.Parameters.Add(new SugarParameter(parameterName,value));
|
||||
parameterName = string.Format(" {0} ", parameterName);
|
||||
this.Context.Parameters.Add(new SugarParameter(appendValue,value));
|
||||
appendValue = string.Format(" {0} ", appendValue);
|
||||
if (isLeft == true)
|
||||
{
|
||||
parameterName += ExpressionConst.Format1 + parameter.BaseParameter.Index;
|
||||
appendValue += ExpressionConst.Format1 + parameter.BaseParameter.Index;
|
||||
}
|
||||
if (this.Context.Result.Contains(ExpressionConst.Format0))
|
||||
{
|
||||
this.Context.Result.Replace(ExpressionConst.Format0, parameterName);
|
||||
this.Context.Result.Replace(ExpressionConst.Format0, appendValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Context.Result.Append(parameterName);
|
||||
this.Context.Result.Append(appendValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
protected void ActionLeft(ExpressionParameter parameter, bool? isLeft)
|
||||
{
|
||||
if (isLeft == true)
|
||||
{
|
||||
this.Context.Result.Append(" " + ExpressionConst.Format1 + parameter.BaseParameter.Index);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace SqlSugar
|
||||
}
|
||||
else
|
||||
{
|
||||
AppendParameter(parameter, isLeft, value);
|
||||
AppendValue(parameter, isLeft, value);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace SqlSugar
|
||||
}
|
||||
else
|
||||
{
|
||||
AppendParameter(parameter, isLeft, value);
|
||||
AppendValue(parameter, isLeft, value);
|
||||
}
|
||||
break;
|
||||
case ResolveExpressType.FieldSingle:
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace SqlSugar
|
||||
}
|
||||
else
|
||||
{
|
||||
AppendParameter(parameter, isLeft, value);
|
||||
AppendValue(parameter, isLeft, value);
|
||||
}
|
||||
break;
|
||||
case ResolveExpressType.SelectSingle:
|
||||
|
||||
@@ -11,6 +11,7 @@ namespace SqlSugar
|
||||
public MethodCallExpressionResolve(ExpressionParameter parameter) : base(parameter)
|
||||
{
|
||||
var express = base.Expression as MethodCallExpression;
|
||||
var isLeft = parameter.IsLeft;
|
||||
CheckMethod(express);
|
||||
var method = express.Method;
|
||||
string name = method.Name;
|
||||
@@ -51,6 +52,7 @@ namespace SqlSugar
|
||||
}
|
||||
var methodValue = GetMdthodValue(name, model);
|
||||
base.Context.Result.Append(methodValue);
|
||||
base.ActionLeft(parameter, isLeft);
|
||||
break;
|
||||
case ResolveExpressType.SelectSingle:
|
||||
case ResolveExpressType.SelectMultiple:
|
||||
@@ -61,6 +63,8 @@ namespace SqlSugar
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private object GetMdthodValue(string name, MethodCallExpressionModel model)
|
||||
{
|
||||
switch (name)
|
||||
|
||||
Reference in New Issue
Block a user