具有视图或存储过程的Azure移动应用程序中的脱机数据同步

我们已经创建了一个Xamarin Forms应用程序,目前只在Android上运行。 后端是.Net Azure移动应用程序服务

我从文章中了解到,离线数据同步仅适用于“/ tables”端点。 (至少那是我所理解的)

但是我的API公开了来自连接查询(实体关系)的数据,还有一些来自存储过程。 这是否意味着这些不适用于当前的SDK? 我有什么选择?

我是否公开表并处理客户端中的连接的业务逻辑?

您有两种关系和离线同步选项。

1)使用触发器创建视图。 插入,更新或删除条目时 – 为后端表执行“正确的操作”。 视图将自动更新。 您的EF模型应该引用该视图。 这完全脱机,因为你只处理一个表(因为它实际上是一个视图)。 这里有SQL复杂性,很多关系都不能用这种方式表示。

2)使用单个表作为“只读” – 发布/放置/删除到自定义API以执行插入,更新和删除,以便保留数据库的引用完整性。 这意味着您的数据可以脱机使用,但除非您在线,否则无法更新数据库

3)从数据库中删除关系,并在客户端上执行连接等。 这将责任推卸给您的客户。 这也意味着您的后端需要强制执行完整性,因为您不知道它是您的客户端访问后端。 可能不是最好的主意。

4)对数据进行非规范化并重构数据库。

我相信有人会提出其他想法。 查看我关于该主题的博文: https : //shellmonger.com/2016/05/27/30-days-of-zumo-v2-azure-mobile-apps-day-26-relationship-advice/

您选择哪一个取决于您想要编写多少代码,您对T-SQL的感觉以及实际数据模型的外观。 所有人都有权衡。