示例#1
0
        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));
        }
示例#2
0
        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));
        }