Azure 移动服务和通用应用程序 SQLite 同步
Azure Mobile Services and Universal Apps SQLite Synchronization
我有一个普通的通用应用程序,没什么花哨的,真的很简单。
有一个 SQLite 数据库,重量超过 200KB(甚至可能是 20MB,记住这一点),我想在 Windows 8.1 和 Windows [=36= 之间共享这个数据库] 8.1 设备。
我猜是漫游流量不够吧?
所以,我在谷歌上搜索并找到了 Azure 移动服务,它真的很不错,但是提供的示例太简单了,我不知道如何扩展它。
我的数据库有7张表,其中一些是通过外键连接的。这是我的示例之一 class(数据库基于它)。
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);
}
}
我得到异常 "Error getting value from 'Adress' on 'Projekt.DataModel.Meeting'."
问题是:处理这个真的很难。没有更简单的解决方案吗?我现在只需要同步我的数据库。请记住,我有一个通过外键连接的表。也许我跳过了一些有价值的例子或教程?
感谢您的帮助。
你是对的,这个数据库对于漫游设置来说太大了。您应该能够让 Azure 移动服务适用于您的场景。
管理关系的一种方法,尤其是当关系是一对多而不是多对多时,是在连接表的后端创建数据库视图。然后你只需与他们同步。请参阅我在该论坛主题上的消息,其中描述了它是如何工作的: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
如果您有更多问题,请随时在我们产品团队定期监控的论坛中 post:https://social.msdn.microsoft.com/Forums/azure/en-US/home?forum=azuremobile
我有一个普通的通用应用程序,没什么花哨的,真的很简单。
有一个 SQLite 数据库,重量超过 200KB(甚至可能是 20MB,记住这一点),我想在 Windows 8.1 和 Windows [=36= 之间共享这个数据库] 8.1 设备。
我猜是漫游流量不够吧?
所以,我在谷歌上搜索并找到了 Azure 移动服务,它真的很不错,但是提供的示例太简单了,我不知道如何扩展它。
我的数据库有7张表,其中一些是通过外键连接的。这是我的示例之一 class(数据库基于它)。
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);
}
}
我得到异常 "Error getting value from 'Adress' on 'Projekt.DataModel.Meeting'."
问题是:处理这个真的很难。没有更简单的解决方案吗?我现在只需要同步我的数据库。请记住,我有一个通过外键连接的表。也许我跳过了一些有价值的例子或教程?
感谢您的帮助。
你是对的,这个数据库对于漫游设置来说太大了。您应该能够让 Azure 移动服务适用于您的场景。
管理关系的一种方法,尤其是当关系是一对多而不是多对多时,是在连接表的后端创建数据库视图。然后你只需与他们同步。请参阅我在该论坛主题上的消息,其中描述了它是如何工作的: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
如果您有更多问题,请随时在我们产品团队定期监控的论坛中 post:https://social.msdn.microsoft.com/Forums/azure/en-US/home?forum=azuremobile