protected void CheckParameterName(string paramName, SingleEntityView view) { if ((!string.IsNullOrEmpty(view.Alias)) && paramName != view.Alias) { ParseExceptionHelper.ThrowParameterNameNotMatchViewAlias(paramName, view.Alias, view.EntityType); } }
protected override Expression VisitBinary(BinaryExpression b) { _str.Append(StringPair.Parenthesis.Begin); this.Visit(b.Left); switch (b.NodeType) { case ExpressionType.And: case ExpressionType.AndAlso: _str.Append(_tr.And); break; case ExpressionType.Or: case ExpressionType.OrElse: _str.Append(_tr.Or); break; case ExpressionType.Equal: if (b.Right.IsConstantNullExpression()) { _str.Append(_tr.Is); } else { _str.Append(_tr.Equal); } break; default: ParseExceptionHelper.ThrowNotSupportedExpression(b); break; } this.Visit(b.Right); _str.Append(StringPair.Parenthesis.End); return(b); }
protected override Expression VisitMethodCall(MethodCallExpression m) { if (m.Method.DeclaringType.Name == ExtensionFunctionNames.EXT_CLASS) { _str.Append(StringPair.Parenthesis.Begin); switch (m.Method.Name) { case ExtensionFunctionNames.FUNC_TRUE: string v = _tr.GetValueString(1); _str.Append(v).Append(_tr.Equal).Append(v); break; case ExtensionFunctionNames.FUNC_FALSE: string v1 = _tr.GetValueString(1); string v0 = _tr.GetValueString(0); _str.Append(v1).Append(_tr.Equal).Append(v0); break; case ExtensionFunctionNames.FUNC_IN: Visit(m.Arguments[0]); //Note:Extension method, visit the 1st param first. _str.Append(_tr.In); _str.Append(StringPair.Parenthesis.Begin); //Note: the 2nd param is an IEnumerable(params T[] is also IEnumerable). IEnumerable seq = (m.Arguments[1] as ConstantExpression).Value as IEnumerable; foreach (object item in seq) { _str.Append(_tr.GetValueString(item)).Append(_tr.ColumnDelimiter); } _str.RemoveEnd(_tr.ColumnDelimiter); _str.Append(StringPair.Parenthesis.End); break; case ExtensionFunctionNames.FUNC_LIKE: Visit(m.Arguments[0]); //Note:Extension method, visit the 1st param first. _str.Append(_tr.Like); object pattern = (m.Arguments[1] as ConstantExpression).Value; _str.Append(_tr.GetValueString(pattern)); break; default: ParseExceptionHelper.ThrowNotSupportedExpression(m); break; } _str.Append(StringPair.Parenthesis.End); return(m); } ParseExceptionHelper.ThrowNotSupportedExpression(m); return(m); }
protected override Expression VisitMember(MemberExpression m) { if (m.Expression != null && m.Expression.NodeType == ExpressionType.Parameter) { string colName = _map.GetColumnFromProperty(m.Member.Name); _str.Append(_tr.GetEscapedColumnName(colName)); return(m); } ParseExceptionHelper.ThrowNotSupportedExpression(m); return(m); }
protected override Expression VisitMember(MemberExpression node) { if (node.NodeType == ExpressionType.MemberAccess) { _str.Append(_tr.GetEscapedColumnName(_map.GetColumnFromProperty(node.Member.Name))); } else { ParseExceptionHelper.ThrowNotSupportedExpression(node); } return(node); }
public static string ChooseNameFromView(this ParameterExpression p, IEnumerable <SingleEntityView> svList, IObjectMapInfoCache cache) { var matchType = from v in svList where v.EntityType == p.Type select v; switch (matchType.Count()) { case 0: ParseExceptionHelper.ThrowTypeNotDefinedInView(p); break; case 1: SingleEntityView view = matchType.First(); if ((!string.IsNullOrEmpty(view.Alias)) && view.Alias != p.Name) { ParseExceptionHelper.ThrowParameterNameNotMatchViewAlias(p.Name, view.Alias, view.EntityType); } if (!string.IsNullOrEmpty(view.Alias)) { return(view.Alias); } else { var map = cache.GetMapInfo(p.Type, true); return(map.Table.LocalName); } default: var q = from v in matchType where v.Alias == p.Name select v; switch (q.Count()) { case 0: ParseExceptionHelper.ThrowNoAliasForParameterName(p); break; case 1: return(q.First().Alias); default: ParseExceptionHelper.ThrowMultiTypeHaveSameAlias(p); break; } break; } return(string.Empty); }
protected override Expression VisitMember(MemberExpression m) { if (m.Expression != null && m.Expression.NodeType == ExpressionType.Parameter) { Visit(m.Expression); var map = _cache.GetMapInfo(m.Expression.Type, true); _str.Append(_tr.MemberAccess); string colName = map.GetColumnFromProperty(m.Member.Name); _str.Append(_tr.GetEscapedColumnName(colName)); return(m); } ParseExceptionHelper.ThrowNotSupportedExpression(m); return(m); }
protected override Expression VisitUnary(UnaryExpression u) { switch (u.NodeType) { case ExpressionType.Not: _str.Append(_tr.Not); this.Visit(u.Operand); break; case ExpressionType.Convert: this.Visit(u.Operand); break; default: ParseExceptionHelper.ThrowNotSupportedExpression(u); break; } return(u); }