public async Task <IReadOnlyCollection <TEntity> > Where <TEntity>( IExpSpecification <TEntity> specification, CancellationToken cancellationToken) where TEntity : Entity { if (specification == null) { throw new ArgumentNullException(nameof(specification)); } if (cancellationToken == null) { throw new ArgumentNullException(nameof(cancellationToken)); } if (specification.Criteria == null) { throw new ArgumentNullException(nameof(specification)); } var query = ConstructQueryFromSpecification(specification); return(await query.Where(specification.Criteria).ToListAsync(cancellationToken)); }
public async Task <TEntity> FirstOrDefault <TEntity>( IExpSpecification <TEntity> specification, CancellationToken cancellationToken) where TEntity : Entity { if (specification == null) { throw new ArgumentNullException(nameof(specification)); } if (cancellationToken == null) { throw new ArgumentNullException(nameof(cancellationToken)); } if (specification.Criteria == null) { throw new ArgumentNullException(nameof(specification)); } var query = ConstructQueryFromSpecification(specification); return(await query.FirstOrDefaultAsync(specification.Criteria, cancellationToken)); }