好的,所以Realm(.NET)不支持其当前版本的异步查询。
如果某个RealmObject
的基础表包含大量记录,比如数十万或数百万,那么首选方法是什么(鉴于目前没有异步限制)?
我目前的选择(迄今为止没有测试过):
Realm.GetInstance().All<T>
并过滤它(然后枚举IEnumerable)。我的假设是UI线程将阻止等待这种可能的冗长操作。 RealmObject's
都需要映射到某个辅助域模型(甚至是相同的模型,但与Realm断开连接),因为不能在线程之间共享/编组领域对象。 是否有任何推荐的方法(当然是由Realm创建者)?我知道这并不完全适合这个网站的问题模型,但也是如此。
答案 0 :(得分:2)
Realm枚举器真的很懒惰,而All<T>
是另一个特例,所以在UI线程上肯定足够快。
即使查询速度如此之快,我们建议大多数人在UI线程上执行查询。
为了扩大我对这个问题的评论,RealmObject子类在编译时是编织,属性getter和setter被映射为直接调用C ++核心,获取内存映射数据。< / p>
可以快速保持线程之间的更新,并提供令人难以置信的列扫描速度。大多数情况下不需要索引,也不需要在不同的线程上运行。
如果你创建一个独立 RealmObject子类,例如:new Dog()
它有一个标志IsManaged==false
,这意味着getter和setter方法仍然使用支持字段,如由编译器。
如果您使用CreateObject
创建对象,或者您使用Realm.Manage
然后IsManaged==true
独立进入领域,则会忽略支持字段。