public async Task <IEnumerable <T> > FetchAsync(IObjectQuery query, bool readOnly = true)
        {
            var modelQuery = query.BuildQuery <T>(Db);
            var q          = readOnly ? modelQuery.AsNoTracking() : modelQuery;

            return(await q.ToArrayAsync());
        }
        private IQueryable <T> BuildCountQuery(IObjectQuery query)
        {
            var numberOfItemsToReturn = query.NumberOfItemsToReturn;
            var numberOfItemToSkip    = query.NumberOfItemsToSkip;

            query.NumberOfItemsToReturn = query.NumberOfItemsToSkip = null;

            var modelQuery = query.BuildQuery <T>(Db);

            query.NumberOfItemsToReturn = numberOfItemsToReturn;
            query.NumberOfItemsToSkip   = numberOfItemToSkip;

            return(modelQuery);
        }
 public async Task <T> FindOneAsync(IObjectQuery query)
 {
     return(await query.BuildQuery <T>(Db)
            //.AsNoTracking()
            .FirstOrDefaultAsync());
 }