2017-05-23 28 views
2

我使用Xamarin Forms和Azure尝试在我的移动应用中实施离线同步以存储Machine对象的列表。Azure离线同步 - 未捕获的异常

在我的类来处理离线同步,我有一个名为Initialize()功能,在我的手机或平板电脑建立一个本地数据库,用于离线同步

public MobileServiceClient client { get; set; } 
    IMobileServiceSyncTable<Machine> machineTable; 

    public async Task Initialize() 
    { 
     if (client?.SyncContext?.IsInitialized ?? false) 
     { 
      return; 
     } 
     var azureUrl = "http://mycoolwebsite.azurewebsites.net"; 

     //Create our client 
     client = new MobileServiceClient(azureUrl); 

     //InitialzeDatabase for path 
     var path = "mylocaldb.db"; 
     path = Path.Combine(MobileServiceClient.DefaultDatabasePath, path); 

     //setup our local sqlite store and intialize our table 
     var store = new MobileServiceSQLiteStore(path); 

     //Define table 
     store.DefineTable<Machine>(); 

     //Initialize SyncContext -- Populate the local DB! 
     await client.SyncContext.InitializeAsync(store, new MobileServiceSyncHandler()); //<-- EXCEPTION HERE 
     machineTable = client.GetSyncTable<Machine>(); 
     // table.PurgeAsync(); 
    } 

当我运行这段代码,我碰上上面强调的一个例外。我错过了什么?作为参考,我正在遵循this教程。

回答

2

事实证明,用时:

await client.SyncContext.InitializeAsync(store, new MobileServiceSyncHandler()); 
    machineTable = client.GetSyncTable<Machine>(); 

我需要有一个public string Id { get; set; }变量在我Machine对象,为建立本地数据库的代码需要这一领域。如果将它添加到文档的某处,会很好!

+0

对于离线同步,你可以按照阿德里安大厅的书[这里](https://adrianhall.github.io/develop-mobile-apps-with-csharp-and-azure/chapter3/client/#an-offline-客户)。 –

+0

既然你已经完成了。您可以将自己标记为可接受的答案,也许可以帮助其他成员面对类似的问题。 –