Asp.net mvc 使用Azure脱机同步时的注意事项

Asp.net mvc 使用Azure脱机同步时的注意事项,asp.net-mvc,xamarin.forms,azure-mobile-services,offline,Asp.net Mvc,Xamarin.forms,Azure Mobile Services,Offline,以下是我当前设置中的一些细节,请记住,这样讨论才有意义 客户端应用程序:Xamarin表单应用程序,使用Azure脱机同步 Web访问:有一个基于Asp.Net的Web前端,它还可以访问移动服务,以将数据读/写到基础表中 后端:托管在Azure上的基于托管点网的应用程序服务 我的问题:现在,我将空值传递给增量同步参数,以忽略任何增量同步(使用PullAsync方法时)&从服务器获取所有数据。但是,这是低效的,因为它会随着数据量的增加而增加加载时间 如果我为考虑中的表的增量同步参数使用一个常量值,

以下是我当前设置中的一些细节,请记住,这样讨论才有意义

客户端应用程序:Xamarin表单应用程序,使用Azure脱机同步

Web访问:有一个基于Asp.Net的Web前端,它还可以访问移动服务,以将数据读/写到基础表中

后端:托管在Azure上的基于托管点网的应用程序服务

我的问题:现在,我将空值传递给增量同步参数,以忽略任何增量同步(使用PullAsync方法时)&从服务器获取所有数据。但是,这是低效的,因为它会随着数据量的增加而增加加载时间

如果我为考虑中的表的增量同步参数使用一个常量值,它就是这样做的

每次拉操作返回一组结果时,来自该结果集的最新updatedAt时间戳存储在SDK本地系统表中。后续的拉取操作将仅检索该时间戳之后的记录

如前所述

问题是,MyWebAccess还从web更新数据&它还使用Azure应用程序服务框架来实现这一点。在这种情况下,如果我使用incremental sync参数来拉取数据,那么web应用程序中的数据就会发生变化&如果移动应用程序再次推拉。。它还会从网络上得到最新的变化吗

我的理解是,增量同步只适用于上下文知道的数据,但在这种情况下,因为web应用程序也在写入上下文不知道的数据,所以它会丢失一些数据&移动应用程序从不下载数据

有没有办法修复这种行为?所以我可以开始使用增量同步&仍然能够确保应用程序始终从服务器获取所有数据而不丢失任何数据位

更新:

@阿德里安,这对我没用。可能是因为我的表的结构,或者我处理它们的方式不正确

我有一个User表和一个Department表,我还有一个UserDepartment表

当我同步应用程序时,此UserDepartment表中的数据会在应用程序上重复


原因可能是,当我在web上编辑用户以向其分配部门时,我从UD表中删除了所有以前的用户部门条目,并根据当前选择重新创建新条目。您是否认为这可能会导致azure客户端SDK出现问题&从而为我复制一些数据

如果您的web应用程序和移动应用程序通过相同的移动应用程序API进行更新(即分别使用.NET SDK和JS SDK),则会为两个推送设置适当的updatedAt,另一方应接受更改。我自己做过好几次,效果很好


在web端(使用JSSDK),您只需使用一个在线表。在移动端(使用.NET SDK),您使用增量同步。

如果您的web应用程序和移动应用程序通过相同的移动应用程序API进行更新(即分别使用.NET SDK和JS SDK),则会为两个推送设置适当的更新数据,另一方应接受更改。我自己做过好几次,效果很好


在web端(使用JSSDK),您只需使用一个在线表。在移动端(使用.NET SDK),您可以使用增量同步。

。这似乎是希望之光。今天我将尝试一下。我已经更新了问题以添加更多细节,请您重新检查,看看这是否是我的解决方案中的错误之处?感谢更新,是的-您清除了数据,然后进行更新,而不是就地更新数据,这是导致问题的原因。确保已启用“软删除”,并确保将记录标记为已删除(已删除字段设置为true),而不是删除记录。这样下游的移动应用程序就会得到更新。也就是说,我应该通过调用update for thes&set IsDeleted=true来标记要删除的现有UD项,但是我不知道哪些记录是存在的,哪些是新记录。web上的用户在编辑其他用户时,会看到分配给他们的部门列表,他们可以删除任何部门并添加新的部门。我使用的是MVC,所以点击SaveonWeb,我得到的只是一个新的用户自定义项列表。你能给我一些建议吗?谢谢你的帮助。非常感谢。你需要给他们打电话。在客户端上,此标记为deleted=true。然后在服务器上设置softdelete-这将处理删除。始终通过API进行删除-SDK会做正确的事情。太棒了。这似乎是希望之光。今天我将尝试一下。我已经更新了问题以添加更多细节,请您重新检查,看看这是否是我的解决方案中的错误之处?感谢更新,是的-您清除了数据,然后进行更新,而不是就地更新数据,这是导致问题的原因。确保已启用“软删除”,并确保将记录标记为已删除(已删除字段设置为true),而不是删除记录。这样下游的移动应用程序就会得到更新。也就是说,我应该通过调用update for thes&set IsDeleted=true来标记要删除的现有UD项,但是我不知道哪些记录是存在的,哪些是新记录。web上的用户在编辑其他用户时,会看到分配给他们的部门列表,他们可以删除任何部门并添加新的部门。我使用的是MVC,所以点击SaveonWeb,我得到的只是一个新的用户自定义项列表。你能给我一些建议吗?谢谢你的帮助。非常感谢。你需要给他们打电话。在客户端上,此标记为deleted=true。然后在服务器上设置softdelete-这将处理删除。总是通过API进行删除-SDK会做正确的事情。你找到这个问题的解决方案了吗?是的,我的问题和我说的完全一样