/// <summary> /// Loads the expressions. /// </summary> private void LoadExpressions() { ExpressionDto dto = ExpressionManager.GetExpressionDto(ExpressionCategory.GetExpressionCategory(ExpressionCategory.CategoryKey.Policy).Key); ddlExpression.DataSource = dto; ddlExpression.DataBind(); }
internal object ProcessExpression(Expression expression, bool isEnumerable) { string empty; Tracer tracer = new Tracer(); Tracer tracer1 = tracer; string str = "LinqQueryProvider"; string str1 = "ProcessExpression"; string str2 = isEnumerable.ToString(); if (expression == null) { empty = string.Empty; } else { empty = expression.ToString(); } tracer1.MethodCall2(str, str1, str2, empty); if (expression != null) { expression = WhereExpressionOptimizer.GetOptimizedExpression(expression, this.initialQueryable, this.initialResourceRoot.ResourceType); Expression expression1 = null; InnermostCmdletFinder innermostCmdletFinder = new InnermostCmdletFinder(); ExpressionCategory expressionCategory = ExpressionCategory.Unhandled; while (innermostCmdletFinder.GetInnermostCmdletExpression(expression, this.initialQueryable, this.GetEntityMetadata(this.initialResourceRoot.ResourceType), out expression1, out expressionCategory)) { expression = this.ProcessCmdletExpression(expression, expression1, expressionCategory, isEnumerable); } return(this.EvaluateByLinqToObjects(expression)); } else { throw new ArgumentNullException(); } }
/// <summary> /// Loads the expressions. /// </summary> /// <param name="iStartIndex">Start index of the i.</param> /// <param name="iNumItems">The i num items.</param> /// <param name="sFilter">The s filter.</param> private void LoadExpressions(int iStartIndex, int iNumItems, string sFilter) { ExpressionDto dto = ExpressionManager.GetExpressionDto(ExpressionCategory.GetExpressionCategory(ExpressionCategory.CategoryKey.Promotion).Key); ExpressionFilter.DataSource = dto.Expression; ExpressionFilter.DataBind(); }
internal Expression ProcessCmdletExpression(Expression rootExpression, Expression cmdletExpression, ExpressionCategory category, bool isEnumerable) { if (TraceHelper.IsEnabled(5)) { object[] objArray = new object[6]; objArray[0] = "ProcessCmdletExpression:\nRootExpression: "; objArray[1] = rootExpression; objArray[2] = "\nCmdletExpression: "; objArray[3] = cmdletExpression; objArray[4] = "\nExpression category:"; objArray[5] = category; TraceHelper.Current.DebugMessage(string.Concat(objArray)); } ExpressionCategory expressionCategory = category; switch (expressionCategory) { case ExpressionCategory.ResourceRoot: { return(this.ProcessResourceRoot(rootExpression, cmdletExpression as ConstantExpression)); } case ExpressionCategory.WhereOfResourceRoot: { return(this.ProcessWhereWithResourceRoot(rootExpression, cmdletExpression as MethodCallExpression, false)); } case ExpressionCategory.WhereInsideNavPropertyWithGetRefCmdlet: { return(this.ProcessWhereWithResourceRoot(rootExpression, cmdletExpression as MethodCallExpression, true)); } case ExpressionCategory.NestedPropertyComparisons: { return(this.ProcessNestedWhereOfResourceRoot(rootExpression, cmdletExpression as MethodCallExpression, false)); } case ExpressionCategory.NestedPropertyComparisonsInsideNavPropertyWithGetRefCmdlet: { return(this.ProcessNestedWhereOfResourceRoot(rootExpression, cmdletExpression as MethodCallExpression, true)); } case ExpressionCategory.WhereOfResultSet: { return(this.ProcessSelectExpansion(rootExpression, cmdletExpression as MethodCallExpression)); } case ExpressionCategory.SelectNavProperty: { return(this.ProcessSelectExpansion(rootExpression, cmdletExpression as MethodCallExpression)); } case ExpressionCategory.SelectExpansion: { return(this.ProcessSelectExpansion(rootExpression, cmdletExpression as MethodCallExpression)); } } throw new NotImplementedException(); }
protected override Expression VisitConstant(ConstantExpression expression) { object value = expression.Value; IQueryable<DSResource> dSResources = value as IQueryable<DSResource>; if (dSResources == this.resourceRoot) { this.cmdletExpression = expression; this.category = ExpressionCategory.ResourceRoot; } return expression; }
public bool GetInnermostCmdletExpression(Expression tree, IQueryable<DSResource> resourceRoot, EntityMetadata entityMetadata, out Expression innermost, out ExpressionCategory category) { this.category = ExpressionCategory.Unhandled; this.cmdletExpression = null; this.resourceRoot = resourceRoot; this.entityMetadata = entityMetadata; this.Visit(tree); innermost = this.cmdletExpression; category = this.category; return (int)category != 8; }
public bool GetInnermostCmdletExpression(Expression tree, IQueryable <DSResource> resourceRoot, EntityMetadata entityMetadata, out Expression innermost, out ExpressionCategory category) { this.category = ExpressionCategory.Unhandled; this.cmdletExpression = null; this.resourceRoot = resourceRoot; this.entityMetadata = entityMetadata; this.Visit(tree); innermost = this.cmdletExpression; category = this.category; return((int)category != 8); }
protected override Expression VisitConstant(ConstantExpression expression) { object value = expression.Value; IQueryable <DSResource> dSResources = value as IQueryable <DSResource>; if (dSResources == this.resourceRoot) { this.cmdletExpression = expression; this.category = ExpressionCategory.ResourceRoot; } return(expression); }
protected override Expression VisitMethodCall(MethodCallExpression expression) { if (expression.Method.Name != "Where") { if (expression.Method.Name != "Select") { if (expression.Method.Name != "SelectMany") { this.navigationProperty = null; } else { this.cmdletExpression = expression; this.category = ExpressionCategory.SelectNavProperty; this.navigationProperty = ExpressionHelper.GetResourcePropertyFromSequence(expression.Arguments[1]); } } else { this.cmdletExpression = expression; this.category = ExpressionCategory.SelectExpansion; this.navigationProperty = null; } } else { if (!ExpressionHelper.IsResourceRoot(expression.Arguments[0], this.resourceRoot)) { if (!ExpressionHelper.IsNestedWhereClause(expression.Arguments[0], this.resourceRoot) || !ExpressionHelper.IsPropertyComparisonPredicate(expression.Arguments[1])) { this.cmdletExpression = expression; this.category = ExpressionCategory.WhereOfResultSet; this.navigationProperty = null; } else { this.cmdletExpression = expression; if (this.navigationProperty.IsNavPropertyHasGetReferenceCmdlet(this.entityMetadata)) { this.category = ExpressionCategory.NestedPropertyComparisonsInsideNavPropertyWithGetRefCmdlet; } else { this.category = ExpressionCategory.NestedPropertyComparisons; } return expression; } } else { this.cmdletExpression = expression; if (this.navigationProperty.IsNavPropertyHasGetReferenceCmdlet(this.entityMetadata)) { this.category = ExpressionCategory.WhereInsideNavPropertyWithGetRefCmdlet; } else { this.category = ExpressionCategory.WhereOfResourceRoot; } return expression; } } this.Visit(expression.Arguments[0]); return expression; }
protected override Expression VisitMethodCall(MethodCallExpression expression) { if (expression.Method.Name != "Where") { if (expression.Method.Name != "Select") { if (expression.Method.Name != "SelectMany") { this.navigationProperty = null; } else { this.cmdletExpression = expression; this.category = ExpressionCategory.SelectNavProperty; this.navigationProperty = ExpressionHelper.GetResourcePropertyFromSequence(expression.Arguments[1]); } } else { this.cmdletExpression = expression; this.category = ExpressionCategory.SelectExpansion; this.navigationProperty = null; } } else { if (!ExpressionHelper.IsResourceRoot(expression.Arguments[0], this.resourceRoot)) { if (!ExpressionHelper.IsNestedWhereClause(expression.Arguments[0], this.resourceRoot) || !ExpressionHelper.IsPropertyComparisonPredicate(expression.Arguments[1])) { this.cmdletExpression = expression; this.category = ExpressionCategory.WhereOfResultSet; this.navigationProperty = null; } else { this.cmdletExpression = expression; if (this.navigationProperty.IsNavPropertyHasGetReferenceCmdlet(this.entityMetadata)) { this.category = ExpressionCategory.NestedPropertyComparisonsInsideNavPropertyWithGetRefCmdlet; } else { this.category = ExpressionCategory.NestedPropertyComparisons; } return(expression); } } else { this.cmdletExpression = expression; if (this.navigationProperty.IsNavPropertyHasGetReferenceCmdlet(this.entityMetadata)) { this.category = ExpressionCategory.WhereInsideNavPropertyWithGetRefCmdlet; } else { this.category = ExpressionCategory.WhereOfResourceRoot; } return(expression); } } this.Visit(expression.Arguments[0]); return(expression); }