public override bool Read()
    {
        CheckState();

        if (IsCommandBehavior(CommandBehavior.SchemaOnly))
        {
            return(false);
        }
        else if (IsCommandBehavior(CommandBehavior.SingleRow) && _position != StartPosition)
        {
            return(false);
        }
        else
        {
            using (var explicitCancellation = ExplicitCancellation.Enter(CancellationToken.None, _command.Cancel))
            {
                _row = _command.Fetch();
                if (_row != null)
                {
                    _position++;
                    return(true);
                }
                else
                {
                    _eof = true;
                    return(false);
                }
            }
        }
    }