/// <summary>
        /// Get paginated list of entities
        /// </summary>
        /// <param name="parentid"></param>
        /// <returns>Paginated list of entities</returns>
        /// <exception cref="EntityOperationException"></exception>
        /// <exception cref="EntityDoesNotExistException"></exception>
        /// <exception cref="UnauthorizedOperationException"></exception>
        /// <exception cref="EntityValidationException"></exception>
        protected virtual PaginatedList <TViewModel> GetMany <TViewModel>(string parentid = "", ODataHelper <T> oData = null)
            where TViewModel : class, IViewModel <T, TViewModel>, new()
        {
            if (oData == null)
            {
                int maxRecords = int.Parse(config["App:MaxReturnRecords"]);
                oData = new ODataHelper <T>();
                string queryString = "";

                if (HttpContext != null &&
                    HttpContext.Request != null &&
                    HttpContext.Request.QueryString != null &&
                    HttpContext.Request.QueryString.HasValue)
                {
                    queryString = HttpContext.Request.QueryString.Value;
                }

                oData.Parse(queryString);
                oData.Top = oData.Top == 0 ? maxRecords : oData.Top;
            }

            Guid parentGuid = Guid.Empty;

            if (!string.IsNullOrEmpty(parentid))
            {
                parentGuid = new Guid(parentid);
            }

            return(readRepository.Find <TViewModel>(parentGuid, oData.Filter, oData.Sort, oData.SortDirection, oData.Skip, oData.Top));
        }