public override async Task <IEnumerable <I> > QueryAllAsync(string predicate)
        {
            var result = new List <E>();
            var query  = await OneEntityController.QueryAllAsync(predicate).ConfigureAwait(false);

            foreach (var item in query)
            {
                E entity = new E();

                entity.OneItem.CopyProperties(item);
                await LoadDetailsAsync(entity, item.Id).ConfigureAwait(false);

                result.Add(entity);
            }
            return(await BeforeReturnAsync(result).ConfigureAwait(false));
        }
        public virtual Task <IQueryable <I> > QueryAllAsync(string predicate)
        {
            return(Task.Run(async() =>
            {
                List <I> result = new List <I>();

                foreach (var item in (await OneEntityController.QueryAllAsync(predicate).ConfigureAwait(false)).ToList())
                {
                    E entity = new E();

                    entity.FirstItem.CopyProperties(item);
                    await LoadDetailsAsync(entity, item.Id).ConfigureAwait(false);

                    result.Add(entity);
                }
                return result.AsQueryable();
            }));
        }