[英]Android Azure Mobile Services Offline Sync Soft Delete
我已经实现了一个支持Azure移动服务和离线同步的Android应用。 我一直在用两种不同的设备进行测试。 我在第一个设备上执行了删除操作(软删除),并且工作正常。 然后,我将其同步,检查服务器端记录是否已删除列已标记为“ true”。 但是我似乎无法使第二台平板电脑同步以反映新的更改,即不显示已删除的记录。
为了启用软删除,我在Azure上的应用程序服务的表控制器中添加了enableSoftDelete:true。 在删除过程方面,我没有碰过我的应用程序,但以下是典型的删除操作:
Save save = getSave(SaveID);
try {
mtblSave.delete(save);
return true;
} catch (Exception exception) {
exception.printStackTrace();
return false;
}
我在Azure SQL Server中使用.NET后端。
有任何想法吗?
提前致谢
但是我似乎无法使第二台平板电脑同步以反映新的更改,即不显示已删除的记录。
使用脱机数据同步移动服务功能时,客户端SDK会自动查询已删除的记录,并将其从本地数据库中删除 。 在未启用软删除的情况下,您需要在后端上编写其他代码,以便客户端SDK知道要从本地存储中删除哪些记录。 否则,客户端本地存储和后端将与这些已删除的记录不一致,并且必须调用客户端方法
PurgeAsync()
来清除本地存储。
我假设您在处理拉操作时可以利用提琴手来捕获网络跟踪。 另外,在构造用于提取数据的查询时,可以如下添加includeDeleted方法,以更好地理解此功能。
var pullQuery = mClient.getTable(ToDoItem.class).where().field("complete").eq(false).includeDeleted();
mToDoTable.pull(mPullQuery).get();
此外,有关在Mobile Services中使用脱机数据同步的更多详细信息,您可以参考此处 。
更新:
query参数是用于过滤结果的可选查询。
正如离线同步的工作方式中提到的有关增量同步 :
如果使用非空的queryId,则Azure Mobile SDK将执行增量同步。 每次拉操作返回一组结果时,该结果集中的最新updateAt时间戳存储在SDK本地系统表中。 随后的拉取操作仅检索该时间戳之后的记录。
查询名称可以是您选择的任何字符串,但对于应用程序中的每个逻辑查询,它必须是唯一的。 否则,不同的提取操作可能会覆盖相同的增量同步时间戳,并且您的查询可能返回错误的结果 。
您可以参考此答案并解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.