【发布时间】:2016-07-22 10:05:31
【问题描述】:
我正在使用 Azure 移动应用服务。我正在使用软删除和增量同步功能。
我遇到了一个有趣的边缘案例:
- 将新记录插入本地数据库
- 推送
- 记录在后端被删除。可以通过使用
client.GetTable<T>().DeleteAsync(foo)而不是client.GetSyncTable<T>().DeleteAsync(foo)直接删除它来模拟客户端 - 本地数据库现在比远程数据库多一条记录
- 再次推送
我以为最后一次推送会在远程数据库上重新创建记录,但事实并非如此 - 这是令人惊讶且非常非常棒的结果,因为这是合乎逻辑的结果!
我不明白的是,为什么?客户端如何知道不推送该孤立记录?
(是因为我从客户端执行了删除操作吗?所以在生产中,当我们的后端系统删除该记录时,客户端会推送它吗?)
编辑,抱歉我没有正确解释:
我的意思是我们有后端系统,它可以直接在后端数据库上执行删除(他们不知道也不关心远程客户端)。我把上面的第 3 点放在上面,就像从客户端本身做的“hackish”方式一样。无论如何,在这种情况下,客户端上会有一个孤立的记录。发生这种情况并执行推送时,客户端是否会尝试在后端重新创建该记录 - 因为它不知道后端已将其删除?
【问题讨论】:
标签: c# azure azure-mobile-services