/// <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 async Task WriteDeltaDeletedEntryAsync(object graph, ODataWriter writer, ODataSerializerContext writeContext) { if (writer == null) { throw Error.ArgumentNull(nameof(writer)); } EdmDeltaDeletedEntityObject edmDeltaDeletedEntity = graph as EdmDeltaDeletedEntityObject; if (edmDeltaDeletedEntity == null) { throw new SerializationException(Error.Format(SRResources.CannotWriteType, GetType().Name, graph?.GetType().FullName)); } Uri id = StringToUri(edmDeltaDeletedEntity.Id); ODataDeletedResource deletedResource = new ODataDeletedResource(id, edmDeltaDeletedEntity.Reason); if (edmDeltaDeletedEntity.NavigationSource != null) { ODataResourceSerializationInfo serializationInfo = new ODataResourceSerializationInfo { NavigationSourceName = edmDeltaDeletedEntity.NavigationSource.Name }; deletedResource.SetSerializationInfo(serializationInfo); } if (deletedResource != null) { await writer.WriteStartAsync(deletedResource).ConfigureAwait(false); await writer.WriteEndAsync().ConfigureAwait(false); } }
/// <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, ODataWriter writer, ODataSerializerContext writeContext) { EdmDeltaDeletedEntityObject edmDeltaDeletedEntity = graph as EdmDeltaDeletedEntityObject; if (edmDeltaDeletedEntity == null) { throw new SerializationException(Error.Format(SRResources.CannotWriteType, GetType().Name, graph.GetType().FullName)); } Uri id = StringToUri(edmDeltaDeletedEntity.Id); ODataDeletedResource deletedResource = new ODataDeletedResource(id, edmDeltaDeletedEntity.Reason); if (edmDeltaDeletedEntity.NavigationSource != null) { ODataResourceSerializationInfo serializationInfo = new ODataResourceSerializationInfo { NavigationSourceName = edmDeltaDeletedEntity.NavigationSource.Name }; deletedResource.SetSerializationInfo(serializationInfo); } if (deletedResource != null) { writer.WriteStart(deletedResource); writer.WriteEnd(); } }
public IHttpActionResult Get() { EdmChangedObjectCollection changedCollection = new EdmChangedObjectCollection(DeltaCustomerType); //Changed or Modified objects are represented as EdmDeltaEntityObjects for (int i = 0; i < 10; i++) { dynamic untypedCustomer = new EdmDeltaEntityObject(DeltaCustomerType); untypedCustomer.Id = i; untypedCustomer.Name = string.Format("Name {0}", i); untypedCustomer.FavoriteNumbers = Enumerable.Range(0, i).ToArray(); changedCollection.Add(untypedCustomer); } //Deleted objects are represented as EdmDeltaDeletedObjects for (int i = 10; i < 15; i++) { dynamic untypedCustomer = new EdmDeltaDeletedEntityObject(DeltaCustomerType); untypedCustomer.Id = i.ToString(); untypedCustomer.Reason = DeltaDeletedEntryReason.Deleted; changedCollection.Add(untypedCustomer); } return(Ok(changedCollection)); }
/// <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); } }
private ODataDeletedResource GetDeletedResource(object graph) { EdmDeltaDeletedEntityObject edmDeltaDeletedEntity = graph as EdmDeltaDeletedEntityObject; if (edmDeltaDeletedEntity == null) { throw new SerializationException(Error.Format(SRResources.CannotWriteType, GetType().Name, graph.GetType().FullName)); } Uri id = StringToUri(edmDeltaDeletedEntity.Id); ODataDeletedResource deletedResource = new ODataDeletedResource(id, edmDeltaDeletedEntity.Reason); if (edmDeltaDeletedEntity.NavigationSource != null) { ODataResourceSerializationInfo serializationInfo = new ODataResourceSerializationInfo { NavigationSourceName = edmDeltaDeletedEntity.NavigationSource.Name }; deletedResource.SetSerializationInfo(serializationInfo); } return(deletedResource); }
public IHttpActionResult Get() { IEdmEntityType customerType = Request.GetModel().FindDeclaredType("WebStack.QA.Test.OData.TestCustomer") as IEdmEntityType; IEdmEntityType customerWithAddressType = Request.GetModel().FindDeclaredType("WebStack.QA.Test.OData.TestCustomerWithAddress") as IEdmEntityType; IEdmComplexType addressType = Request.GetModel().FindDeclaredType("WebStack.QA.Test.OData.TestAddress") as IEdmComplexType; IEdmEntityType orderType = Request.GetModel().FindDeclaredType("WebStack.QA.Test.OData.TestOrder") as IEdmEntityType; IEdmEntitySet ordersSet = Request.GetModel().FindDeclaredEntitySet("TestOrders") as IEdmEntitySet; EdmChangedObjectCollection changedObjects = new EdmChangedObjectCollection(customerType); EdmDeltaComplexObject a = new EdmDeltaComplexObject(addressType); a.TrySetPropertyValue("State", "State"); a.TrySetPropertyValue("ZipCode", null); EdmDeltaEntityObject changedEntity = new EdmDeltaEntityObject(customerWithAddressType); changedEntity.TrySetPropertyValue("Id", 1); changedEntity.TrySetPropertyValue("Name", "Name"); changedEntity.TrySetPropertyValue("Address", a); changedEntity.TrySetPropertyValue("PhoneNumbers", new List <String> { "123-4567", "765-4321" }); changedEntity.TrySetPropertyValue("OpenProperty", 10); changedEntity.TrySetPropertyValue("NullOpenProperty", null); changedObjects.Add(changedEntity); EdmComplexObjectCollection places = new EdmComplexObjectCollection(new EdmCollectionTypeReference(new EdmCollectionType(new EdmComplexTypeReference(addressType, true)))); EdmDeltaComplexObject b = new EdmDeltaComplexObject(addressType); b.TrySetPropertyValue("City", "City2"); b.TrySetPropertyValue("State", "State2"); b.TrySetPropertyValue("ZipCode", 12345); b.TrySetPropertyValue("OpenProperty", 10); b.TrySetPropertyValue("NullOpenProperty", null); places.Add(a); places.Add(b); var newCustomer = new EdmDeltaEntityObject(customerType); newCustomer.TrySetPropertyValue("Id", 10); newCustomer.TrySetPropertyValue("Name", "NewCustomer"); newCustomer.TrySetPropertyValue("FavoritePlaces", places); changedObjects.Add(newCustomer); var newOrder = new EdmDeltaEntityObject(orderType); newOrder.NavigationSource = ordersSet; newOrder.TrySetPropertyValue("Id", 27); newOrder.TrySetPropertyValue("Amount", 100); changedObjects.Add(newOrder); var deletedCustomer = new EdmDeltaDeletedEntityObject(customerType); deletedCustomer.Id = "7"; deletedCustomer.Reason = DeltaDeletedEntryReason.Changed; changedObjects.Add(deletedCustomer); var deletedOrder = new EdmDeltaDeletedEntityObject(orderType); deletedOrder.NavigationSource = ordersSet; deletedOrder.Id = "12"; deletedOrder.Reason = DeltaDeletedEntryReason.Deleted; changedObjects.Add(deletedOrder); var deletedLink = new EdmDeltaDeletedLink(customerType); deletedLink.Source = new Uri("http://localhost/odata/DeltaCustomers(1)"); deletedLink.Target = new Uri("http://localhost/odata/DeltaOrders(12)"); deletedLink.Relationship = "Orders"; changedObjects.Add(deletedLink); var addedLink = new EdmDeltaLink(customerType); addedLink.Source = new Uri("http://localhost/odata/DeltaCustomers(10)"); addedLink.Target = new Uri("http://localhost/odata/DeltaOrders(27)"); addedLink.Relationship = "Orders"; changedObjects.Add(addedLink); return(Ok(changedObjects)); }