protected IActionResult OData <T>(OeAsyncEnumerator asyncEnumerator) { var entityAsyncEnumerator = new OeEntityAsyncEnumerator <T>(_queryContext.EntryFactory, asyncEnumerator, _queryContext.SkipTokenParser); return(new ODataResult <T>(_edmModel, _queryContext.ODataUri, entityAsyncEnumerator) { Count = asyncEnumerator.Count, PageSize = _queryContext.PageSize }); }
public IAsyncEnumerable <T> ExecuteReader <T>(IQueryable source = null, bool navigationNextLink = false, int?maxPageSize = null) { OeAsyncEnumerator asyncEnumerator = GetAsyncEnumerator(source, navigationNextLink, maxPageSize); if (asyncEnumerator is OeAsyncEnumeratorAdapter || OeExpressionHelper.IsPrimitiveType(typeof(T))) { return(new OeAsyncEnumeratorAdapter <T>(asyncEnumerator)); } return(new OeEntityAsyncEnumeratorAdapter <T>(asyncEnumerator, _queryContext)); }
protected ODataResult <T> OData <T>(OeAsyncEnumerator asyncEnumerator) { var entityAsyncEnumerator = new OeEntityAsyncEnumerator <T>(asyncEnumerator, _queryContext.EntryFactory, _queryContext); HttpContext.Response.RegisterForDispose(entityAsyncEnumerator); return(new ODataResult <T>(_edmModel, _queryContext.ODataUri, entityAsyncEnumerator) { Count = asyncEnumerator.Count, PageSize = _queryContext.PageSize }); }
public async Task <T?> ExecuteScalar <T>(IQueryable source = null) where T : struct { OeAsyncEnumerator asyncEnumerator = GetAsyncEnumerator(source); if (await asyncEnumerator.MoveNextAsync() && asyncEnumerator.Current != null) { return((T)asyncEnumerator.Current); } _httpContext.Response.ContentType = null; return(null); }
protected IActionResult OData(OeAsyncEnumerator asyncEnumerator) { if (asyncEnumerator is OeScalarAsyncEnumeratorAdapter) { return(ODataScalar(asyncEnumerator).GetAwaiter().GetResult()); } Type clrType = _edmModel.GetClrType(_queryContext.EntryFactory.EntityType); Func <OeAsyncEnumerator, IActionResult> odataFunc = OData <Object>; return((IActionResult)odataFunc.Method.GetGenericMethodDefinition().MakeGenericMethod(clrType).Invoke(this, new Object[] { asyncEnumerator })); }
private OeAsyncEnumerator ExecutePost(IEdmModel refModel, ODataUri odataUri, OeRequestHeaders headers, CancellationToken cancellationToken, Stream requestStream) { _odataUri = odataUri; var parser = new OePostParser(refModel); OeAsyncEnumerator asyncEnumerator = parser.GetAsyncEnumerator(odataUri, requestStream, headers, _dataContext, out bool isScalar); if (!isScalar) { _queryContext = parser.CreateQueryContext(odataUri, headers.MetadataLevel); } return(asyncEnumerator); }
private OeAsyncEnumerator Execute(ODataUri odataUri, Stream requestStream, OeRequestHeaders headers, CancellationToken cancellationToken) { Object dataContext = _dataAdapter.CreateDataContext(); var parser = new OePostParser(_dataAdapter, _edmModel); OeAsyncEnumerator asyncEnumerator = parser.GetAsyncEnumerator(odataUri, requestStream, headers, dataContext, out Type returnClrType); if (returnClrType != null && !(returnClrType.IsPrimitive || returnClrType == typeof(String))) { _queryContext = parser.CreateQueryContext(odataUri, headers.MetadataLevel, returnClrType); } return(asyncEnumerator); }
protected async Task <IActionResult> ODataScalar(OeAsyncEnumerator asyncEnumerator) { if (await asyncEnumerator.MoveNextAsync() && asyncEnumerator.Current != null) { return new ContentResult() { Content = asyncEnumerator.Current.ToString(), ContentType = OeRequestHeaders.TextDefault.ContentType } } ; base.HttpContext.Response.ContentType = null; return(new EmptyResult()); } }