【问题标题】:Offline Data Sync in Azure Mobile Apps with Views or Stored Procedure使用视图或存储过程在 Azure 移动应用程序中进行离线数据同步
【发布时间】:2016-06-15 15:46:53
【问题描述】:

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

我从articles 了解到,离线数据同步仅适用于 "/tables" 端点。 (至少我是这么理解的)

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

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

【问题讨论】:

    标签: c# stored-procedures xamarin.forms xamarin.android azure-mobile-services


    【解决方案1】:

    您有几个用于关系和离线同步的选项。

    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 的感觉如何以及实际的数据模型是什么样的。所有这些都需要权衡取舍。

    【讨论】:

    • 我已经阅读了您的文章。它们非常有用。是否有显示第一种方式的示例(使用触发器创建视图)。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 2018-04-18
    • 2012-11-02
    • 2011-12-23
    相关资源
    最近更新 更多