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); }
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); }