Modifying Entities¶
Modifying entities offline is done by calling the updateEntity()
method.
Regular Update¶
Normally there will be no combining or reordering of the queued requests. Multiple updateEntity()
invocation against the same entity will result in a series of OData requests.
The sample below demonstrates usage of updateEntity()
for modifying an entity.
// Declare a new Track entity
Track track = ...;
// Create a local Track entity
eventService.createEntity(track);
// Update property values
track.setName("General");
...
// Update the entity
eventService.updateEntity(track);
/// Declare a new Track entity
let track = ...
/// Create a local Track entity
try eventService.createEntity(track)
/// Update property values
track.name = "General"
...
/// Update the entity
try eventService.updateEntity(track)
Because a download may take place before any upload, an entity modified locally may receive an update from the OData service. When that happens, the offline store uses the latest state from the OData service and reapplies all the outstanding requests from the queue for that same entity.
Empty Update¶
By default empty PATCH
requests, that is, requests that do not change anything, are not sent. Usually such requests will be discarded.
Sometimes such requests are expected to remain and should be sent to the back end. For example, an empty PATCH
request may indicate that a parent entity needs to be updated when a child is added. Another example is that, a set of request need to be sent for a group of entities at the same time, although some of those entities haven't been changed.
To force an empty PATCH
request to be sent, provide a RequestOptions
instance with sendEmptyUpdate
property set to true
when performing the PATCH
request.
// Locate the entity to send an empty PATCH
Track track = ...;
// Do other jobs
...
// Set request options
RequestOptions options = new RequestOptions();
options.setSendEmptyUpdate(true);
// Since sending empty update is enabled, the call would send a PATCH request with empty request body
eventService.updateEntity(track, HttpHeaders.empty, options);
/// Locate the entity to send an empty PATCH
let track = ...
/// Do other jobs
...
/// Set request options
let options = RequestOptions()
options.sendEmptyUpdate = true
/// Since sending empty update is enabled, the call would send a PATCH request with empty request body
try eventService.updateEntity(track, headers: HttpHeaders.empty, options: options)