【发布时间】:2017-01-30 11:01:14
【问题描述】:
我应该在我的 xamarin 表单应用程序中使用 akavache 作为主要本地数据库,还是在另一个 sqlite 数据库之上使用缓存数据库?因为我找不到任何关于如何在 akavache 对象中更新、插入、删除数据的示例。例如,
CacheItems= await BlobCache.LocalMachine.GetOrFetchObject<List<Item>>("CacheItems",
async () => await getdatafromAzure(recursive));
我从 azure 获取项目并存储在本地计算机中,这些项目是可编辑/可删除的,或者用户可以添加新项目。我该怎么做?
【问题讨论】:
-
您是否测试了其他 Get
Insert 和 Delete 方法? github.com/akavache/Akavache -
@Depechie 也许我不明白插入的目的,但这会在 akavache 缓存中创建全新的对象,不是吗?等待 BlobCache.UserAccount.InsertObject("CacheItems", new item());这是否会在我的 CacheItems 中插入一个新项目插入,其类型为项目列表。
-
我认为 GetOr*** 方法只是为您执行基本调用的重载。只要你使用相同的缓存键,我想你可以得到你需要的所有项目。
-
Akavache 基本上只是一个键/值存储类型的数据库,因此您不能像 SQL Lite 那样对存储在数据库中的记录进行部分更新。这确实是两种不同的存储概念。如果您只想更新一个字段,那么您可以将获取与插入链接起来,因此首先获取内容,然后更新字段,然后插入。在我的应用程序中,我只是使用 Akavache 进行持久性,所以我总是将模型保存在内存中,当我更新它们时,我会将它们推送到 Akavache,因此如果应用程序关闭,对象仍然会保留。您使用两者的用例是什么?似乎有些过分,但也许你有一个很好的案例
-
@ShaneNeuville 这听起来正是我想要的。我还是新手,我仍在尝试了解 akavache。你如何缓存对象?简单地使用静态对象还是可以使用 BlobCache.InMemory? BlobCache.InMemory 是否与 BlobCache.LocalMachine 相同,但会在内存中添加额外内容还是仅在内存中添加?