public T Read(QueryResult queryResult)
        {
            var ord = queryResult.GetOrdinal(_aliasName);

            if (queryResult.IsDBNull(ord))
            {
                return(default(T));
            }

            if (typeof(T).IsEnum)
            {
                return((T)(object)QueryTypeReaders.GetTypeReader <int>()(queryResult, ord));
            }
            return(QueryTypeReaders.GetTypeReader <T>()(queryResult, ord));
        }
        public T Read <T>(IFieldPath <EntityModel, EntityField> fieldPath)
        {
            if (typeof(T).IsEnum)
            {
                return((T)(object)Read <int>(fieldPath));
            }

            var ord = _queryResult.GetOrdinal(fieldPath.FinalField.ProjectionAlias);

            if (_queryResult.IsDBNull(ord))
            {
                return(default(T));
            }

            var typeReader = QueryTypeReaders.GetTypeReader <T>();

            if (typeReader == null)
            {
                throw new InvalidOperationException($"Type `{typeof(T).FullName}` not supported.");
            }
            return(typeReader(_queryResult, ord));
        }