public ObjectReader(IDbDataReader reader, Func <IDbDataRecord, TEntity> translator)
        {
            Precondition.Require(reader, () => Error.ArgumentNull("reader"));
            Precondition.Require(translator, () => Error.ArgumentNull("translator"));

            _enumerator = new ObjectEnumerator <TEntity>(reader, translator);
        }
 protected virtual void Dispose(bool disposing)
 {
     if (disposing)
     {
         if (_enumerator != null)
         {
             _enumerator.Dispose();
         }
     }
     _enumerator = null;
 }
        public IEnumerator <TEntity> GetEnumerator()
        {
            ObjectEnumerator <TEntity> e = _enumerator;

            if (e == null)
            {
                throw Error.CannotEnumerateMoreThanOnce();
            }

            _enumerator = null;
            return(e);
        }