Ensures that a given expression matches SQL server value semantics.
SqlContextExpressionVisitor traverses an expression tree and ensures that the tree fits SQL server requirements for expressions. In scenarios where a value is required as per SQL server standards, boolean expressions are converted to integers using CASE WHEN expressions. In such situations, and constants are converted to 1 and 0 values, and boolean columns are interpreted as integer values. In scenarios where a predicate is required, boolean expressions are constructed by comparing those integer values to 1 and 0 literals. In scenarios where a single value is required, an exception is thrown where compound values (NewExpression) or entities are encountered.
Inheritance: System.Linq.Expressions.ExpressionTreeVisitor, ISqlSpecificExpressionVisitor, IResolvedSqlExpressionVisitor, ISqlSubStatementVisitor, ISqlGroupingSelectExpressionVisitor, ISqlConvertedBooleanExpressionVisitor, INamedExpressionVisitor, IAggregationExpressionVisitor
Example #1
0
        public virtual Expression ApplyContext(Expression expression, SqlExpressionContext expressionContext, IMappingResolutionContext mappingResolutionContext)
        {
            ArgumentUtility.CheckNotNull("expression", expression);
            ArgumentUtility.CheckNotNull("mappingResolutionContext", mappingResolutionContext);

            return(SqlContextExpressionVisitor.ApplySqlExpressionContext(expression, expressionContext, this, mappingResolutionContext));
        }
    public static Expression ApplySqlExpressionContext (
        Expression expression, SqlExpressionContext initialSemantics, IMappingResolutionStage stage, IMappingResolutionContext context)
    {
      ArgumentUtility.CheckNotNull ("expression", expression);
      ArgumentUtility.CheckNotNull ("stage", stage);
      ArgumentUtility.CheckNotNull ("context", context);

      var visitor = new SqlContextExpressionVisitor (initialSemantics, stage, context);
      return visitor.VisitExpression (expression);
    }
        public static Expression ApplySqlExpressionContext(
            Expression expression, SqlExpressionContext initialSemantics, IMappingResolutionStage stage, IMappingResolutionContext context)
        {
            ArgumentUtility.CheckNotNull("expression", expression);
            ArgumentUtility.CheckNotNull("stage", stage);
            ArgumentUtility.CheckNotNull("context", context);

            var visitor = new SqlContextExpressionVisitor(initialSemantics, stage, context);

            return(visitor.Visit(expression));
        }
        private Expression VisitChildrenWithGivenSemantics(Expression expression, SqlExpressionContext childContext)
        {
            var visitor = new SqlContextExpressionVisitor(childContext, _stage, _context);

            return(visitor.VisitExtension(expression));
        }
 private Expression VisitChildrenWithGivenSemantics (ExtensionExpression expression, SqlExpressionContext childContext)
 {
   var visitor = new SqlContextExpressionVisitor (childContext, _stage, _context);
   return visitor.VisitExtensionExpression (expression);
 }