在域中调用WriteAsync后存储并发送数据到服务

时间:2017-05-01 11:57:53

标签: xamarin realm

我正在尝试使用Realm方法创建客户并将其保存在WriteAsync数据库中。一旦客户得到存储,我就会通过仅添加客户屏幕并相应地显示加载程序将此数据发送到服务器。

这是代码,

 var newCustomer = new Customer
    {

        organizationName = etOrganization.Text
        firstName = etFirstName.Text,
        lastName = etLastName.Text,
    };
        await _realmInstance.WriteAsync(temp =>
        {
            _realmInstance.Add(newCustomer , true);

        });

        createUpdateCustomer(newCustomer);

但是我收到错误,即Realm Already Closed,我在展位WriteAsync下执行会在插入数据后关闭该域。所以在这种情况下,存储和发送数据到服务的最佳方法是什么。

1 个答案:

答案 0 :(得分:1)

由于您在之后将newCustomer传递给另一个函数,它将成为Realm管理的,您将需要在添加/更新后通过当前线程检索该对象的新实例您的WriteAsync来电,或改为使用Write,即

_realmInstance.Write(() =>
{
    _realmInstance.Add(newCustomer , true);
});
createUpdateCustomer(newCustomer);

或者:

await _realmInstance.WriteAsync(temp =>
{
    temp.Add(newCustomer , true);
});
// use Find if your RealmObject has a primary key...
var customer = _realmInstance.Find<Customer>(.......);
// otherwise use Where with First...
var customer = _realmInstance.All<Customer>().Where(_ => _.firstName == ~~~ & _.lastName == ~~~).First();
createUpdateCustomer(customer);

在这种情况下使用WriteAsync不值得花费,只需使用Write