Esempio n. 1
0
        public static IEnumerable <ODataEntry> ReadODataFeed(IEdmModel model, Stream stream)
        {
            ODataMessageReaderSettings readerSettings = new ODataMessageReaderSettings()
            {
                BaseUri = ServiceRootUri
            };
            var responseMessage = new ODataResponseMessage(stream);

            using (var messageReader = new ODataMessageReader(responseMessage, readerSettings, model))
            {
                List <ODataEntry> entries = new List <ODataEntry>();
                var reader = messageReader.CreateODataFeedReader();

                while (reader.Read())
                {
                    switch (reader.State)
                    {
                    case ODataReaderState.EntryEnd:
                        ODataEntry entry = reader.Item as ODataEntry;
                        entries.Add(entry);
                        yield return(entry);

                        break;

                    default:
                        break;
                    }
                }
            }
        }
Esempio n. 2
0
        public static void WriteODataFeed(IEdmModel model, Stream stream, NavigationPropertySegment containedSegment, ODataPath queryPath)
        {
            // Create a ODataEntry
            ODataEntry[] entries = new ODataEntry[]
            {
                new ODataEntry()
                {
                    Properties = new[]
                    {
                        new ODataProperty {
                            Name = "ProductID", Value = 1
                        },
                    },
                }
            };

            var message = new ODataResponseMessage(stream);

            ODataMessageWriterSettings writerSettings = new ODataMessageWriterSettings();

            writerSettings.ODataUri = new ODataUri()
            {
                ServiceRoot = ServiceRootUri
            };
            writerSettings.PayloadBaseUri = ServiceRootUri;
            writerSettings.SetContentType("application/json;odata.metadata=full", Encoding.UTF8.WebName);
            writerSettings.AutoComputePayloadMetadataInJson = true;

            writerSettings.ODataUri = new ODataUri()
            {
                ServiceRoot = ServiceRootUri,
                Path        = queryPath,
            };

            using (var messageWriter = new ODataMessageWriter(message, writerSettings, model))
            {
                var feedWriter = messageWriter.CreateODataFeedWriter(containedSegment.NavigationSource as IEdmEntitySetBase, containedSegment.NavigationSource.EntityType());
                var feed       = new ODataFeed();

                feedWriter.WriteStart(feed);

                foreach (ODataEntry entry in entries)
                {
                    feedWriter.WriteStart(entry);
                    feedWriter.WriteEnd();
                }

                feedWriter.WriteEnd();
                feedWriter.Flush();
            }
        }