Azure移动服务PullAsync()不填充同步表

时间:2015-09-20 23:10:47

标签: c# sqlite azure xamarin azure-mobile-services

所以我有一个名为Profile的远程表,它已经有多个条目。现在我尝试将离线功能集成到我的应用程序中。截至目前,我的代码中遇到了PushAsyncPullAsync方法的问题。

我希望能够通过调用PullAsync将远程表中的所有数据复制到我的本地表中,虽然它不会抛出任何异常但它也不会填充我的桌子。这是我的意思的一个例子。

        var db = new SQLiteConnection("syncstoreTEMP.db");
        var store = new MobileServiceSQLiteStore("syncstoreTEMP.db");
        store.DefineTable<Profile>();
        MobileService.SyncContext.InitializeAsync(store).Wait();
        var remoteValues = MobileService.GetTable<Profile>()
            .ToListAsync()
            .Result;
        MobileService.GetSyncTable<Profile>()
            .PullAsync(null, MobileService.GetSyncTable<Profile>().CreateQuery())
            .Wait();
        var localValues = MobileService.GetSyncTable<Profile>()
            .ToListAsync()
            .Result;

当我运行此代码时,remoteValues的总长度为5,但localValues即使在从远程发出拉动后仍显示0个条目。如何让同步表与我的远程表匹配?

1 个答案:

答案 0 :(得分:0)

奇怪的是,您没有得到任何例外,但您似乎正在创建与本地商店的两个连接。你应该拥有新SQLiteConnection的行,只有创建MobileServiceSQLiteStore的行。

这是一个介绍如何进行设置的教程:https://azure.microsoft.com/en-us/documentation/articles/mobile-services-xamarin-ios-get-started-offline-data/

我还建议您向MobileServiceClient添加DelegatingHandler,以便记录所有请求和响应。然后你就可以确切地看出出了什么问题。这是一个显示此内容的示例,还包括SQLite商店的日志记录扩展,以便您可以准确查看本地发生的情况:https://github.com/paulbatum/FieldEngineerLite/blob/master/FieldEngineerLite.Client/FieldEngineerLite/Helpers/LoggingHelpers.cs