public IDataReader Execute(IAdoCommand adoCommand)
        {
            var command = ConvertCommand(adoCommand);

            if (Timeout > command.Timeout)
            {
                command.Timeout = Timeout;
            }

            var res = command.Execute();

            return(res);
        }
        static AdoCommand ConvertCommand(IAdoCommand adoCommand)
        {
            if (adoCommand == null)
            {
                throw new ArgumentNullException("IAdoCommand cannot be null to be executed", "adoCommand");
            }

            var command = adoCommand as AdoCommand;

            if (command == null)
            {
                throw new ArgumentException("Unknown IAdoCommand", "adoCommand");
            }

            return(command);
        }