public override SqlFragment Visit(DbElementExpression expression)
        {
            SelectStatement s = VisitInputExpressionEnsureSelect(expression.Argument, null, null);

            s.Wrap(scope);
            return(s);
        }
        public SelectStatement WrapIfNotCompatible(SelectStatement select, DbExpressionKind expressionKind)
        {
            if (select.IsCompatible(expressionKind))
            {
                return(select);
            }
            SelectStatement newSelect = new SelectStatement();

            select.Wrap(scope);
            select.Scoped  = true;
            newSelect.From = select;
            return(newSelect);
        }
 private InputFragment WrapJoinInputIfNecessary(InputFragment fragment, bool isRightPart)
 {
     if (fragment is SelectStatement || fragment is UnionFragment)
     {
         fragment.Wrap(scope);
         fragment.Scoped = true;
     }
     else if (fragment is JoinFragment && isRightPart)
     {
         SelectStatement select = new SelectStatement();
         select.From = fragment;
         select.Name = fragment.Name;
         select.Wrap(scope);
         return(select);
     }
     return(fragment);
 }
 private InputFragment WrapJoinInputIfNecessary(InputFragment fragment, bool isRightPart)
 {
     if (fragment is SelectStatement || fragment is UnionFragment)
     {
         fragment.Wrap(scope);
         fragment.Scoped = true;
     }
     else if (fragment is JoinFragment && isRightPart)
     {
         SelectStatement select = new SelectStatement();
         select.From = fragment;
         select.Name = fragment.Name;
         select.Wrap(scope);
         return select;
     }
     return fragment;
 }
 public SelectStatement WrapIfNotCompatible(SelectStatement select, DbExpressionKind expressionKind)
 {
     if (select.IsCompatible(expressionKind)) return select;
     SelectStatement newSelect = new SelectStatement();
     select.Wrap(scope);
     select.Scoped = true;
     newSelect.From = select;
     return newSelect;
 }