private static async Task WriteMetadataAsync(IEdmModel edmModel, Stream stream) { var writerSettings = new ODataMessageWriterSettings(); writerSettings.EnableMessageStreamDisposal = false; IODataResponseMessage message = new Infrastructure.OeInMemoryMessage(stream, null); using (var writer = new ODataMessageWriter((IODataResponseMessageAsync)message, writerSettings, edmModel)) await writer.WriteMetadataDocumentAsync().ConfigureAwait(false); }
/// <inheritdoc/> /// <remarks>The metadata written is from the model set on the <paramref name="messageWriter"/>. The <paramref name="graph" /> /// is not used.</remarks> public override async Task WriteObjectAsync(object graph, Type type, ODataMessageWriter messageWriter, ODataSerializerContext writeContext) { if (messageWriter == null) { throw Error.ArgumentNull(nameof(messageWriter)); } // NOTE: ODataMessageWriter doesn't have a way to set the IEdmModel. So, there is an underlying assumption here that // the model received by this method and the model passed(from configuration) while building ODataMessageWriter is the same (clr object). await messageWriter.WriteMetadataDocumentAsync().ConfigureAwait(false); }