在项目中有两个领域数据库并合并它

时间:2017-03-25 14:28:03

标签: ios xamarin realm

我的应用,付费和免费用户有两种类型的用户。 对于免费用户,我不提供他们在我的应用程序中创建的任何数据备份,因此这个领域数据库实例(比如db1)不会同步。 对于付费用户,我正在证明备份,在这里我使用的是同步域db(比如db2)。

这里的条件是当用户更喜欢付费用户时,如何同步先前离线领域db中可用的数据。如何将此db1合并到db2。

另外,我在Db(视频和图像)中写了一大堆数据。我更喜欢异步写入和读取。 (我试过writeAsync方法,它给出了异常) 任何提示都将不胜感激。

下面的代码是抛出说从错误的线程访问域。

public async Task InsertItemInDB(Post model)
        {
            try
            {
                //realm.Write(() =>
                //   {

                //     realm.Add(model);

                //   });
                var realm = Realm.GetInstance(Config);
                await realm.WriteAsync( (Realm obj) => {


                    realm.Add(model, true);
                });
            }
            catch(Exception ex){

                Console.WriteLine("problem writing to DB" + ex);
            }
        }

1 个答案:

答案 0 :(得分:2)

当你启动WriteAsync块时,你必须使用传递给lamb块的Realm实例,否则你将得到一个无效的线程异常。

您的代码应为:

await realm.WriteAsync( (Realm obj) => {
    // Use the Realm instance that was passed in, i.e. `Realm obj`
    obj.Add(model, true);
});