Exemplo n.º 1
0
 public void Delete(Specification.ISpecification <TEntity> specification, bool autoSaveChanges = true)
 {
     Delete(specification.Predicate, false);
     if (autoSaveChanges)
     {
         _context.SaveChanges();
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// <see cref="IRepository{T, TId}"/>
        /// </summary>
        /// <param name="specification"><see cref="IRepository{T, TId}"/></param>
        /// <param name="sortDescriptors"><see cref="IRepository{T, TId}"/></param>
        /// <returns><see cref="IRepository{T, TId}.FindBy"/></returns>
        public virtual IEnumerable <T> FindBy(
            Specification.ISpecification <T> specification,
            params SortDescriptor <T>[] sortDescriptors)
        {
            var query = Query;

            query = query
                    .FindBy <T, TId>(specification)
                    .Sort <T, TId>(sortDescriptors);

            return(query.ToArray());
        }
Exemplo n.º 3
0
 public Task <T> GetBySpecAsync(Specification.ISpecification <T> specification)
 {
     if (specification.CacheEnabled)
     {
         string key = $"{specification.CacheKey}-GetBySpecAsync";
         _logger.LogInformation("Checking cache for " + key);
         return(_cache.GetOrCreate(key, entry =>
         {
             entry.SetOptions(_cacheOptions);
             _logger.LogWarning("Fetching source data for " + key);
             return _sourceRepository.GetBySpecAsync(specification);
         }));
     }
     return(_sourceRepository.GetBySpecAsync(specification));
 }
Exemplo n.º 4
0
        /// <summary>
        /// <see cref="IRepository{T, TId}"/>
        /// </summary>
        /// <param name="specification"><see cref="IRepository{T, TId}"/></param>
        /// <param name="pageIndex"><see cref="IRepository{T, TId}"/></param>
        /// <param name="pageSize"><see cref="IRepository{T, TId}"/></param>
        /// <param name="sortDescriptors"><see cref="IRepository{T, TId}"/></param>
        /// <returns><see cref="IRepository{T, TId}"/></returns>
        public virtual IEnumerable <T> FindPageBy(
            Specification.ISpecification <T> specification,
            int pageIndex,
            int pageSize,
            params SortDescriptor <T>[] sortDescriptors)
        {
            var query = Query;

            query = query
                    .FindBy <T, TId>(specification)
                    .Sort <T, TId>(sortDescriptors)
                    .Paginate(pageIndex, pageSize);

            return(query.ToArray());
        }
Exemplo n.º 5
0
 /// <inheritdoc/>
 public Task <List <T> > ListAsync(Specification.ISpecification <T> specification, CancellationToken cancellationToken = default)
 {
     if (specification.CacheEnabled)
     {
         string key = $"{specification.CacheKey}-ListAsync";
         _logger.LogInformation("Checking cache for " + key);
         return(_cache.GetOrCreate(key, entry =>
         {
             entry.SetOptions(_cacheOptions);
             _logger.LogWarning("Fetching source data for " + key);
             return _sourceRepository.ListAsync(specification, cancellationToken);
         }));
     }
     return(_sourceRepository.ListAsync(specification, cancellationToken));
 }
Exemplo n.º 6
0
        public IEnumerable <TEntity> List(Specification.ISpecification <TEntity> spec)
        {
            // fetch a Queryable that includes all expression-based includes
            var queryableResultWithIncludes = spec.Includes
                                              .Aggregate(_dbContext.Set <TEntity>().AsQueryable(),
                                                         (current, include) => current.Include(include));

            // modify the IQueryable to include any string-based include statements
            var secondaryResult = spec.IncludeStrings
                                  .Aggregate(queryableResultWithIncludes,
                                             (current, include) => current.Include(include));

            // return the result of the query using the specification's criteria expression
            return(secondaryResult
                   .Where(spec.Criteria)
                   .AsEnumerable());
        }
Exemplo n.º 7
0
 public Task <List <TResult> > ListAsync <TResult>(Specification.ISpecification <T, TResult> specification)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 8
0
 public IList <TEntity> Find(Specification.ISpecification <TEntity> specification, bool IsNoTracking = true)
 {
     return(GetQuery(specification, IsNoTracking).ToList());
 }
Exemplo n.º 9
0
 public IQueryable <TEntity> GetQuery(Specification.ISpecification <TEntity> specification, bool IsNoTracking = true)
 {
     return(GetQuery(specification.Predicate, IsNoTracking));
 }
Exemplo n.º 10
0
 /// <inheritdoc/>
 public Task <TResult> GetBySpecAsync <TResult>(Specification.ISpecification <T, TResult> specification, CancellationToken cancellationToken = default)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 11
0
 /// <inheritdoc/>
 public Task <int> CountAsync(Specification.ISpecification <T> specification, CancellationToken cancellationToken = default)
 {
     // TODO: Add Caching
     return(_sourceRepository.CountAsync(specification, cancellationToken));
 }
Exemplo n.º 12
0
 public Task <TResult> GetBySpecAsync <TResult>(Specification.ISpecification <T, TResult> specification)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 13
0
        public IQueryable <TEntity> GetModel(Action <IRepositories.Commons.IOrderable <TEntity> > orderBy, Specification.ISpecification <TEntity> specification)
        {
            var linq = new Orderable <TEntity>(GetModel(specification));

            orderBy(linq);
            return(linq.Queryable);
        }
Exemplo n.º 14
0
 public async Task <IList <TEntity> > FindAsync(Specification.ISpecification <TEntity> specification, bool IsNoTracking = true)
 {
     return(await GetQuery(specification.Predicate).ToListAsync());
 }
Exemplo n.º 15
0
 public async Task <TEntity> SingleAsync(Specification.ISpecification <TEntity> specification, bool IsNoTracking = true)
 {
     return(await SingleAsync(specification.Predicate));
 }
Exemplo n.º 16
0
        public IQueryable <TEntity> GetModel(Action <IRepositories.Commons.IOrderable <TEntity> > orderBy, Specification.ISpecification <TEntity> specification)
        {
            var queryable = GetModel().Where(specification.SatisfiedBy()).AsQueryable();
            var linq      = new Orderable <TEntity>(queryable);

            orderBy(linq);
            return(linq.Queryable);
        }
Exemplo n.º 17
0
 public TEntity Find(Specification.ISpecification <TEntity> specification)
 {
     return(GetModel().FirstOrDefault(specification.SatisfiedBy()));
 }
Exemplo n.º 18
0
 public IQueryable <TEntity> GetModel(Specification.ISpecification <TEntity> specification)
 {
     return(GetModel().Where(specification.SatisfiedBy()));
 }
Exemplo n.º 19
0
 public TEntity GetSingleBySpec(Specification.ISpecification <TEntity> spec)
 {
     return(List(spec).FirstOrDefault());
 }
Exemplo n.º 20
0
 public async Task <IQueryable <TEntity> > GetQueryAsync(Specification.ISpecification <TEntity> specification, bool IsNoTracking = true)
 {
     return(await GetQueryAsync(specification.Predicate));
 }
Exemplo n.º 21
0
 public Task <int> CountAsync(Specification.ISpecification <T> specification)
 {
     // TODO: Add Caching
     return(_sourceRepository.CountAsync(specification));
 }
Exemplo n.º 22
0
 public TEntity Single(Specification.ISpecification <TEntity> specification, bool IsNoTracking = true)
 {
     return(Single(specification.Predicate, IsNoTracking));
 }
Exemplo n.º 23
0
 public TEntity Find(Specification.ISpecification <TEntity> specification)
 {
     return(Find(specification.SatisfiedBy()));
 }