2015-01-11 143 views
2

我有一个普通的通用应用程序,没有什么花哨,真的很简单。Azure移动服务和通用应用程序SQLite同步

有一个SQLite数据库的权重超过200KB(甚至可能是20MB,请牢记),我想在Windows 8.1和Windows Phone 8.1设备之间共享此数据库。

我想漫游数据还不够,对不对?

因此,我搜索了一下,发现Azure移动服务,它真的很好,但提供的例子太简单了,我不知道如何扩展它。

我的数据库有7个表,其中一些是通过外键连接的。这里是我的一个例子(数据库是基于它的)。

public class Meeting : INotifyPropertyChanged 
{ 
     public Meeting() { } 

     private int _id; 
     [PrimaryKey, AutoIncrement] 
     public int Id { get; set; } 

     private int _adressId; 
     public int AdressId { get; set; } 

     private Adress _adress; 
     [Ignore] 
     public Adress Adress { get; set; } 
} 

然后是方法

private async Task InitLocalStoreAsync() 
{ 
    if (!App.MobileService.SyncContext.IsInitialized) 
    { 
     var store = new MobileServiceSQLiteStore("MyDatabase.db"); 
     store.DefineTable<Adress>(); 
     store.DefineTable<Contractor>(); 
     store.DefineTable<Item>(); 
     store.DefineTable<ItemGroup>(); 
     store.DefineTable<Meeting>(); 
     store.DefineTable<Note>(); 
     store.DefineTable<Order>(); 

     await App.MobileService.SyncContext.InitializeAsync(store); 
    } 
} 

,我得到异常 “从 'Projekt.DataModel.Meeting' ADRESS'错误中获得价值。”

事情是:真的很难与此合作。没有简单的解决方案吗?我现在不需要,只有我的数据库同步。请记住,我有一个通过外键连接的表。也许我跳过一些有价值的例子或教程?

感谢您的帮助。

回答

1

你说得对,这个数据库对于漫游设置来说太大了。您应该能够使Azure移动服务适用于您的方案。

管理关系的一种方法,特别是如果它们是1对多而非多对多的方法是在后端创建连接表的数据库视图。然后你只是对他们同步。查看介绍如何这会工作这个论坛主题我的消息:https://social.msdn.microsoft.com/Forums/azure/en-US/4c056373-d5cf-4ca6-9f00-f152d2b01372/best-practice-for-syncing-related-tables-in-offline-mode?forum=azuremobile

您可能也有兴趣,我们已经建立了一个解决方案加速器,那就说明你会如何在一个真正的应用程序连接一切:https://code.msdn.microsoft.com/windowsapps/Field-Engineer-501df99d

如果你有更多的问题,随时张贴在我们的论坛,产品团队定期监测:https://social.msdn.microsoft.com/Forums/azure/en-US/home?forum=azuremobile

相关问题