【发布时间】:2017-06-29 12:41:48
【问题描述】:
我正在开发一个使用 Xamarin.Forms 和 Azure App Service 的应用程序。 用户必须明确执行数据同步。当用户开始数据同步时,会执行很多这样的方法来从服务器获取当前数据:
await this.ISyncTable.PullAsync(queryId, query, cancellationToken).ConfigureAwait(false);
我的问题:应用程序可能会进入不一致的状态。例如,当用户在数据同步完成之前关闭应用程序时。在这种状态下,应用程序不可用。
编辑:
为了更容易理解:假设我有一个表“ToDoItem”和“ToDoCategory”。用户开始数据同步。数据同步运行,所有 ToDoItem 均已成功检索。在下一步中,数据同步将获取 ToDoCategories(对 PullAsync 的另一个调用),但在此之前用户关闭应用程序。现在我有所有 ToDoItems 但没有 ToDoCategories。但是,如果没有 ToDoCategories,该应用程序将无法使用。这是一个非常简单的例子。实际项目中的数据结构要复杂得多。实体之间有很多依赖关系。
记录同步错误/取消并在下一次应用启动时提示用户再次同步是没有解决方案的。假设在下一次应用启动时,用户没有互联网连接并且无法执行数据同步。在下一次成功的数据同步之前,我无法锁定应用程序。
有没有办法在一个事务中运行多个 PullAsync 操作?
【问题讨论】:
标签: android ios azure xamarin azure-mobile-services