繁体   English   中英

Android Azure移动服务脱机同步软删除

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM