Azure离线同步已更新为在增量同步期间提取整个数据

时间:2018-03-06 17:13:57

标签: c# azure xamarin azure-mobile-services azure-data-sync

我有一个表控制器,它有一种方式同步(只有获取,因为没有任何移动更新)。所以当我第一次执行PullAsync时,它已经提取了整个数据,因为我的Update At字段对所有记录都有相同的时间戳。现在第二次我只想做增量Pull(注意我确实将名称值传递给PullAsync以启用增量同步)。

但问题是,它再次检索整个数据,因为在更新时没有更新时间戳(因为表控制器中没有更新方法,因为它是单向同步 - Azure到移动设备)。如果在所有Update At值都是相同时间戳的情况下没有更新,我怎么能省略再次提取数据?问题与下面链接中提到的相同。我们是否还需要进行一次记录更新才能解决此问题?

https://social.msdn.microsoft.com/Forums/office/en-US/ff002e85-1313-449f-89eb-cd45c1a4846c/mobile-services-sync-pullasync-and-updatedat?forum=azuremobile

先谢谢

1 个答案:

答案 0 :(得分:1)

  

如果在所有Update At值都是相同时间戳的情况下没有更新,我怎么能省略再次提取数据?问题与下面链接中提到的相同。我们是否还需要进行一次记录更新才能解决此问题?

我已检查此问题是否仍然存在。 AFAIK,PullAsync操作将提取50条记录(MaxPageSize默认为50),然后开始事务以插入/更新检索到的实体,然后使用最新更新的时间戳更新本地__config表,然后尝试检索下一页记录并再次执行上述处理。

注意: id列的格式如下deltaToken|{table-name}|{query-id}

拉动操作请求如下:

https://<app-name>.azurewebsites.net/tables/<table-name>?$filter=(updatedAt ge datetimeoffset'2018-02-21T08:58:45.446Z')&$orderby=updatedAt&$skip=0&$top=50&__includeDeleted=true

我假设您可以查询本地__config表以检索最新的updatedAt值或查询相关的本地表以检索最新的updatedAt值,然后向当前updatedAt添加一个小的时间间隔并明确指定使用增量拉操作时,使用之前的updatedAt过滤UpdatedAt属性。