public static void WriteDeltaFeed(ODataDeltaWriter deltaWriter, List<ODataItem> items, bool? countOption, Uri newDeltaLink) { var deltaFeed = new ODataDeltaFeed { DeltaLink = newDeltaLink }; if (countOption == true) { deltaFeed.Count = items.Cast<object>().Count(); } deltaWriter.WriteStart(deltaFeed); foreach (ODataItem item in items) { var entry = item as ODataEntry; var deletedEntry = item as ODataDeltaDeletedEntry; var deltaLink = item as ODataDeltaLink; var deltaDeletedLink = item as ODataDeltaDeletedLink; if (entry != null) { deltaWriter.WriteStart(entry); deltaWriter.WriteEnd(); } else if (deletedEntry != null) { deltaWriter.WriteDeltaDeletedEntry(deletedEntry); } else if (deltaLink != null) { deltaWriter.WriteDeltaLink(deltaLink); } else if (deltaDeletedLink != null) { deltaWriter.WriteDeltaDeletedLink(deltaDeletedLink); } } deltaWriter.WriteEnd(); }
/// <summary> /// Writes the given deltaDeletedEntry specified by the parameter graph as a part of an existing OData message using the given /// messageWriter and the writeContext. /// </summary> /// <param name="graph">The object to be written.</param> /// <param name="writer">The <see cref="ODataDeltaWriter" /> to be used for writing.</param> /// <param name="writeContext">The <see cref="ODataSerializerContext"/>.</param> public virtual void WriteDeltaDeletedEntry(object graph, ODataDeltaWriter writer, ODataSerializerContext writeContext) { EdmDeltaDeletedEntityObject edmDeltaDeletedEntity = graph as EdmDeltaDeletedEntityObject; if (edmDeltaDeletedEntity == null) { throw new SerializationException(Error.Format(SRResources.CannotWriteType, GetType().Name, graph.GetType().FullName)); } ODataDeltaDeletedEntry deltaDeletedEntry = new ODataDeltaDeletedEntry( edmDeltaDeletedEntity.Id, edmDeltaDeletedEntity.Reason); if (deltaDeletedEntry != null) { writer.WriteDeltaDeletedEntry(deltaDeletedEntry); } }