public static async Task SerializeAsync(Uri baseUri, OeParseUriContext parseUriContext, Db.OeEntityAsyncEnumerator asyncEnumerator, Stream stream) { IEdmModel edmModel = parseUriContext.EdmModel; OeEntryFactory entryFactory = parseUriContext.EntryFactory; String contentType = parseUriContext.Headers.ContentType; var settings = new ODataMessageWriterSettings() { BaseUri = baseUri, EnableMessageStreamDisposal = false, ODataUri = parseUriContext.ODataUri, Validations = ValidationKinds.ThrowIfTypeConflictsWithMetadata | ValidationKinds.ThrowOnDuplicatePropertyNames, Version = ODataVersion.V4 }; IODataResponseMessage responseMessage = new OeInMemoryMessage(stream, contentType); using (ODataMessageWriter messageWriter = new ODataMessageWriter(responseMessage, settings, edmModel)) { ODataUtils.SetHeadersForPayload(messageWriter, ODataPayloadKind.ResourceSet); ODataWriter writer = messageWriter.CreateODataResourceSetWriter(entryFactory.EntitySet, entryFactory.EntityType); var getWriter = new GetWriter(baseUri, parseUriContext.Headers.MetadataLevel, writer); await getWriter.SerializeAsync(entryFactory, asyncEnumerator, stream); } }
public static async Task SerializeAsync(OeQueryContext queryContext, Db.OeAsyncEnumerator asyncEnumerator, String contentType, Stream stream) { OeEntryFactory entryFactory = queryContext.EntryFactory; var settings = new ODataMessageWriterSettings() { BaseUri = queryContext.ODataUri.ServiceRoot, EnableMessageStreamDisposal = false, ODataUri = queryContext.ODataUri, Validations = ValidationKinds.ThrowIfTypeConflictsWithMetadata | ValidationKinds.ThrowOnDuplicatePropertyNames, Version = ODataVersion.V4 }; IODataResponseMessage responseMessage = new OeInMemoryMessage(stream, contentType); using (ODataMessageWriter messageWriter = new ODataMessageWriter(responseMessage, settings, queryContext.EdmModel)) { ODataUtils.SetHeadersForPayload(messageWriter, ODataPayloadKind.ResourceSet); ODataWriter writer = messageWriter.CreateODataResourceSetWriter(entryFactory.EntitySet, entryFactory.EntityType); var getWriter = new GetWriter(queryContext, writer); await getWriter.SerializeAsync(entryFactory, asyncEnumerator, queryContext).ConfigureAwait(false); } }