Ejemplo n.º 1
0
        public static IQueryable <TEntity> GetQuery(IQueryable <TEntity> inputQuery,
                                                    ISpecificaation <TEntity> spec)
        {
            var query = inputQuery;

            if (spec.Criteria != null)
            {
                query = query.Where(spec.Criteria);
            }
            query = spec.Includes.Aggregate(query, (current, include) => current.Include(include));
            return(query);
        }
Ejemplo n.º 2
0
 private IQueryable <T> ApplySpecification(ISpecificaation <T> spec)
 {
     return(SpecificationEvaluator <T> .GetQuery(_context.Set <T>().AsQueryable(), spec));
 }
Ejemplo n.º 3
0
 public async Task <IReadOnlyList <T> > ListAsync(ISpecificaation <T> spec)
 {
     return(await ApplySpecification(spec).ToListAsync());
 }
Ejemplo n.º 4
0
 public async Task <T> GetEntityWithSpecification(ISpecificaation <T> spec)
 {
     return(await ApplySpecification(spec).FirstOrDefaultAsync());
 }