public ISqlFragment Build(WhereClause clause) { _holder = this; Where = null; Visit(clause.Predicate); if (Where == null) { throw new BadLinqExpressionException($"Unsupported Where clause: '{clause.Predicate}'"); } return(Where); }
protected override Expression VisitUnary(UnaryExpression node) { if (node.NodeType == ExpressionType.Not) { var original = _holder; _holder = new NotWhereFragment(original); var returnValue = Visit(node.Operand); _holder = original; return(returnValue); } return(base.VisitUnary(node)); }
private void buildCompoundWhereFragment(BinaryExpression node, string separator) { var original = _holder; var compound = CompoundWhereFragment.For(separator); _holder.Register(compound); _holder = compound; Visit(node.Left); _holder = compound; Visit(node.Right); _holder = original; }
protected override Expression VisitUnary(UnaryExpression node) { if (node.NodeType == ExpressionType.Not) { var original = _holder; if (original is IReversibleWhereFragment r) { _holder.Register(r.Reverse()); return(Visit(node.Operand)); } else { _holder = new NotWhereFragment(original); var returnValue = Visit(node.Operand); _holder = original; return(returnValue); } } return(base.VisitUnary(node)); }
public WhereClauseParser(IMartenSession session, Statement statement) { _session = session; _statement = statement; _holder = this; }
public NotWhereFragment(IWhereFragmentHolder parent) { _parent = parent; }