public async ValueTask <bool> MoveNextAsync() { if (_isFirstMoveNext) { _isFirstMoveNext = false; _isMoveNext = await _dbEnumerator.MoveNextAsync().ConfigureAwait(false); } if (!_isMoveNext) { return(false); } var entity = (T) await CreateEntity(_dbEnumerator, _dbEnumerator.Current, _dbEnumerator.Current, typeof(T), _cancellationToken).ConfigureAwait(false); Object rawValue = _dbEnumerator.RawValue; _isMoveNext = await _dbEnumerator.MoveNextAsync().ConfigureAwait(false); if (!_isMoveNext && _queryContext != null && _queryContext.EntryFactory != null && _queryContext.EntryFactory.SkipTokenAccessors.Length > 0) { SetOrderByProperties(_queryContext.EntryFactory, _queryContext.ODataUri.OrderBy, entity, rawValue); } _current = entity; return(true); }
public override async Task <bool> MoveNextAsync() { if (_isFirstMoveNext) { _isFirstMoveNext = false; _isMoveNext = await _dbEnumerator.MoveNextAsync().ConfigureAwait(false); } if (!_isMoveNext) { return(false); } var entity = (T) await CreateEntity(_dbEnumerator, _dbEnumerator.Current, _dbEnumerator.Current, typeof(T)).ConfigureAwait(false); Object buffer = _dbEnumerator.ClearBuffer(); _isMoveNext = await _dbEnumerator.MoveNextAsync().ConfigureAwait(false); if (!_isMoveNext && _queryContext != null && _queryContext.SkipTokenNameValues != null && _queryContext.SkipTokenAccessors != null) { SetOrderByProperties(_queryContext, entity, buffer); } _current = entity; return(true); }
private static async Task <Object> CreateNestedEntity(OeDbEnumerator dbEnumerator, Object value, Type nestedEntityType) { Object entity = dbEnumerator.Current; if (entity == null) { return(null); } if (dbEnumerator.EntryFactory.ResourceInfo.IsCollection.GetValueOrDefault()) { Type listType = typeof(List <>).MakeGenericType(new[] { nestedEntityType }); var list = (IList)Activator.CreateInstance(listType); do { Object item = dbEnumerator.Current; if (item != null) { list.Add(await CreateEntity(dbEnumerator, item, item, nestedEntityType).ConfigureAwait(false)); } }while (await dbEnumerator.MoveNextAsync().ConfigureAwait(false)); return(list); } return(await CreateEntity(dbEnumerator, value, entity, nestedEntityType).ConfigureAwait(false)); }