I have generated a runtime geodatabase from a sync-enabled feature service as described on this page ... Create an offline map—ArcGIS Runtime SDK for .NET | ArcGIS for Developers . That works OK, but is somewhat unreliable in that I had to try multiple times to get it to download. Maybe I'll post a separate question on that.
In code I do something like this to setup my map ...
var gdb = await Geodatabase.OpenAsync(master.GeodatabasePath);
foreach (var table in gdb.GeodatabaseFeatureTables)
{
await table.LoadAsync();
var layer = new FeatureLayer(table);
layer.Id = table.TableName;
mapView.Map.OperationalLayers.Add(layer);
}
Then later ...
var attributes = new Dictionary<string, object>();
attributes.Add("PlanId", 1);
attributes.Add("PlanGuid", Guid.NewGuid());
var layer = Mapview.Map.OperationalLayers["Aoi"] as FeatureLayer;
var newFeature = layer.FeatureTable.CreateFeature(attributes, _aoiGeometry);
await layer.FeatureTable.AddFeatureAsync(newFeature);
...
That works fine too.
However, I noticed that the feature is written immediately to the attached geodatabase. Is there a way to delay writing to the database until I make an explicit call?
I suppose I could initially create graphics, and then when I want to persist them, create features from the graphics. That's a simple enough concept but seems convoluted in that I would also have to created a bunch of graphics from existing features every time my query criteria changes.
Or is there a better workflow instead? My goal is to work offline only. We will never sync back to the server after creating the initial (empty) geodatabase. I do need to be able to perform all of the basic create, update, insert, select operations on the feature data. Would FeatureCollection be a viable alternative?