This commit is contained in:
sunkaixuan 2017-09-15 15:24:14 +08:00
parent 00c64dd9f3
commit d7b714f530

View File

@ -11,12 +11,14 @@ namespace SqlSugar
public MemberExpressionResolve(ExpressionParameter parameter) : base(parameter) public MemberExpressionResolve(ExpressionParameter parameter) : base(parameter)
{ {
var baseParameter = parameter.BaseParameter; var baseParameter = parameter.BaseParameter;
var isLeft = parameter.IsLeft;
var isSetTempData = baseParameter.CommonTempData.IsValuable() && baseParameter.CommonTempData.Equals(CommonTempDataType.Result);
var expression = base.Expression as MemberExpression; var expression = base.Expression as MemberExpression;
var memberName = expression.Member.Name; var memberName = expression.Member.Name;
var childExpression = expression.Expression as MemberExpression; var childExpression = expression.Expression as MemberExpression;
var childIsMember = childExpression != null; var childIsMember = childExpression != null;
string fieldName = string.Empty;
var isLeft = parameter.IsLeft;
var isSetTempData = baseParameter.CommonTempData.IsValuable() && baseParameter.CommonTempData.Equals(CommonTempDataType.Result);
var isValue = memberName == "Value" && expression.Member.DeclaringType.Name == "Nullable`1"; var isValue = memberName == "Value" && expression.Member.DeclaringType.Name == "Nullable`1";
var isBool = expression.Type == UtilConstants.BoolType; var isBool = expression.Type == UtilConstants.BoolType;
var isValueBool = isValue && isBool && parameter.BaseExpression == null; var isValueBool = isValue && isBool && parameter.BaseExpression == null;
@ -26,6 +28,7 @@ namespace SqlSugar
var isHasValue = isLogicOperator && memberName == "HasValue" && expression.Expression != null && expression.NodeType == ExpressionType.MemberAccess; var isHasValue = isLogicOperator && memberName == "HasValue" && expression.Expression != null && expression.NodeType == ExpressionType.MemberAccess;
var isDateDate = memberName == "Date" && expression.Expression.Type == UtilConstants.DateType; var isDateDate = memberName == "Date" && expression.Expression.Type == UtilConstants.DateType;
var isMemberValue = expression.Expression != null && expression.Expression.NodeType != ExpressionType.Parameter && !isValueBool; var isMemberValue = expression.Expression != null && expression.Expression.NodeType != ExpressionType.Parameter && !isValueBool;
if (isLength) if (isLength)
{ {
ResolveLength(parameter, isLeft, expression);return; ResolveLength(parameter, isLeft, expression);return;
@ -49,31 +52,22 @@ namespace SqlSugar
ResolveMemberValue(parameter, baseParameter, isLeft, isSetTempData, expression); ResolveMemberValue(parameter, baseParameter, isLeft, isSetTempData, expression);
return; return;
} }
string fieldName = string.Empty;
baseParameter.ChildExpression = expression; baseParameter.ChildExpression = expression;
switch (parameter.Context.ResolveType) switch (parameter.Context.ResolveType)
{ {
case ResolveExpressType.SelectSingle: case ResolveExpressType.SelectSingle:
fieldName = GetSingleName(parameter, expression, isLeft); fieldName = GetSingleName(parameter, expression, isLeft);
if (isSetTempData) if (isSetTempData)
{
baseParameter.CommonTempData = fieldName; baseParameter.CommonTempData = fieldName;
}
else else
{
base.Context.Result.Append(fieldName); base.Context.Result.Append(fieldName);
}
break; break;
case ResolveExpressType.SelectMultiple: case ResolveExpressType.SelectMultiple:
fieldName = GetMultipleName(parameter, expression, isLeft); fieldName = GetMultipleName(parameter, expression, isLeft);
if (isSetTempData) if (isSetTempData)
{
baseParameter.CommonTempData = fieldName; baseParameter.CommonTempData = fieldName;
}
else else
{
base.Context.Result.Append(fieldName); base.Context.Result.Append(fieldName);
}
break; break;
case ResolveExpressType.WhereSingle: case ResolveExpressType.WhereSingle:
case ResolveExpressType.WhereMultiple: case ResolveExpressType.WhereMultiple: