gpt4 book ai didi

sqlite - Azure 移动服务和通用应用 SQLite 同步

转载 作者:行者123 更新时间:2023-12-03 17:58:11 24 4
gpt4 key购买 nike

我有一个普通的通用应用程序,没什么花哨的,非常简单。

有一个重量超过 200KB(甚至可能是 20MB,记住这一点)的 SQLite 数据库,我想在 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'获取值(value)时出错。”

问题是:处理这个真的很难。没有更简单的解决方案吗?我现在什么都不需要,只需要同步我的数据库。请记住,我有一个通过外键连接的表。也许我跳过了一些有值(value)的例子或教程?

感谢你的帮助。

最佳答案

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

管理关系的一种方法,尤其是在它们是一对多而不是多对多的情况下,是在后端创建连接表的数据库 View 。然后,您只需与它们同步。请参阅我在此论坛主题上的消息,其中描述了这将如何工作: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

关于sqlite - Azure 移动服务和通用应用 SQLite 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27889308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com