Exemple #1
0
        public async Task <ICollection <TEntity> > ListAsync <TEntity>(LinqSpecification <TEntity> specification) where TEntity : class
        {
            if (specification == null)
            {
                throw new ArgumentNullException(nameof(specification));
            }

            return(await GetQueryable(specification).ToListAsync());
        }
Exemple #2
0
        public async Task <TEntity> SingleAsync <TEntity>(LinqSpecification <TEntity> specification) where TEntity : class
        {
            if (specification == null)
            {
                throw new ArgumentNullException(nameof(specification));
            }

            return(await GetQueryable(specification).SingleOrDefaultAsync());
        }
 private void AndSpecification(LinqSpecification <Ticket> filterSpec)
 {
     if (_specification == null)
     {
         _specification = filterSpec;
     }
     else
     {
         _specification &= filterSpec;
     }
 }
Exemple #4
0
        protected virtual IQueryable <TEntity> GetQueryable <TEntity>(LinqSpecification <TEntity> specification) where TEntity : class
        {
            var setQueryable = _dataContext.Set <TEntity>().AsQueryable();

            if (specification.IsTracked)
            {
                setQueryable.AsNoTracking();
            }

            setQueryable = specification.ApplyFilters(setQueryable);
            setQueryable = specification.ApplyModifiers(setQueryable);

            return(setQueryable);
        }
Exemple #5
0
        public async Task <TResult> QueryAsync <TEntity, TResult>(LinqSpecification <TEntity> specification, Func <IQueryable <TEntity>, Task <TResult> > resolver) where TEntity : class
        {
            if (specification == null)
            {
                throw new ArgumentNullException(nameof(specification));
            }

            if (resolver == null)
            {
                throw new ArgumentNullException(nameof(resolver));
            }

            var query = GetQueryable(specification);

            return(await resolver(query));
        }
Exemple #6
0
        public async Task <PagedCollection <TEntity> > PagedListAsync <TEntity>(int page, int pageSize, LinqSpecification <TEntity> specification, Expression <Func <TEntity, dynamic> > primaryKeyExpression = null) where TEntity : class
        {
            if (specification == null)
            {
                throw new ArgumentNullException(nameof(specification));
            }

            if (page < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(page));
            }

            if (pageSize <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(pageSize));
            }

            Task <int> totalRecordsResolver(IQueryable <TEntity> query) => primaryKeyExpression == null?query.CountAsync() : query.Select(primaryKeyExpression).CountAsync();
            Func <IQueryable <TEntity>, IQueryable <TEntity> > paginationResolverFunction() => a => a.Skip(page * pageSize).Take(pageSize);

            var totalRecords = await QueryAsync(specification, totalRecordsResolver);

            var pagedEntities = await ListAsync(specification.AddQuery(paginationResolverFunction()));

            return(new PagedCollection <TEntity>(page, pageSize, totalRecords, pagedEntities));
        }
 protected AbstractTicketsLookup(LinqSpecification <Ticket> defaultSpecifcation)
 {
     _specification = defaultSpecifcation;
 }
Exemple #8
0
 public LinqSpecificationFixture()
 {
     _specfication = new LinqSpecification <string>(s => s.Length == 1);
 }