public virtual async Task <TDto> Get([FromODataUri] TKey key, CancellationToken cancellationToken)
        {
            IQueryable <TDto> baseQuery = WhereByKeyBuilders.WhereByKey(await GetAll(cancellationToken), key);

            IDataProviderSpecificMethodsProvider dataProviderSpecificMethodsProvider = null;

            if (DataProviderSpecificMethodsProviders != null)
            {
                dataProviderSpecificMethodsProvider = DataProviderSpecificMethodsProviders.FirstOrDefault(asyncQueryableExecuter => asyncQueryableExecuter.SupportsQueryable <TDto>(baseQuery));
            }

            TDto dtoResult = default(TDto);

            if (dataProviderSpecificMethodsProvider != null)
            {
                dtoResult = await dataProviderSpecificMethodsProvider.FirstOrDefaultAsync(baseQuery, cancellationToken);
            }
            else
            {
                dtoResult = baseQuery.FirstOrDefault();
            }

            if (dtoResult == null)
            {
                throw new ResourceNotFoundException();
            }

            return(dtoResult);
        }
        protected virtual async Task <TDto> GetById(TKey key, CancellationToken cancellationToken)
        {
            IDataProviderSpecificMethodsProvider dataProviderSpecificMethodsProvider = null;

            IQueryable <TDto> getByIdQuery = await GetByIdQuery(key, cancellationToken);

            if (DataProviderSpecificMethodsProviders != null)
            {
                dataProviderSpecificMethodsProvider = DataProviderSpecificMethodsProviders.FirstOrDefault(asyncQueryableExecuter => asyncQueryableExecuter.SupportsQueryable <TDto>(getByIdQuery));
            }

            if (dataProviderSpecificMethodsProvider == null)
            {
                dataProviderSpecificMethodsProvider = DefaultDataProviderSpecificMethodsProvider.Current;
            }

            TDto result = await dataProviderSpecificMethodsProvider.FirstOrDefaultAsync(getByIdQuery, cancellationToken);

            if (result == null)
            {
                throw new ResourceNotFoundException();
            }

            return(result);
        }
Exemple #3
0
        protected virtual async Task <TDto> GetDtoById(TKey key, CancellationToken cancellationToken)
        {
            IQueryable <TDto> getByIdQuery = await GetQueryById(key, cancellationToken);

            IDataProviderSpecificMethodsProvider dataProviderSpecificMethodsProvider = null;

            if (DataProviderSpecificMethodsProviders != null)
            {
                dataProviderSpecificMethodsProvider = DataProviderSpecificMethodsProviders.FirstOrDefault(asyncQueryableExecutor => asyncQueryableExecutor.SupportsQueryable <TDto>(getByIdQuery));
            }

            if (dataProviderSpecificMethodsProvider == null)
            {
                dataProviderSpecificMethodsProvider = DefaultDataProviderSpecificMethodsProvider.Current;
            }

            TDto dto = await dataProviderSpecificMethodsProvider.FirstOrDefaultAsync(getByIdQuery, cancellationToken);

            return(dto);
        }