This commit is contained in:
sunkaixuan
2017-01-31 20:13:22 +08:00
parent c3dc2c9b43
commit 820bea17b9
5 changed files with 27 additions and 16 deletions

View File

@@ -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);
}
}
}
}

View File

@@ -29,7 +29,7 @@ namespace SqlSugar
}
else
{
AppendParameter(parameter, isLeft, value);
AppendValue(parameter, isLeft, value);
}
break;

View File

@@ -30,7 +30,7 @@ namespace SqlSugar
}
else
{
AppendParameter(parameter, isLeft, value);
AppendValue(parameter, isLeft, value);
}
break;
case ResolveExpressType.FieldSingle:

View File

@@ -35,7 +35,7 @@ namespace SqlSugar
}
else
{
AppendParameter(parameter, isLeft, value);
AppendValue(parameter, isLeft, value);
}
break;
case ResolveExpressType.SelectSingle:

View File

@@ -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)