【发布时间】:2017-12-18 19:11:33
【问题描述】:
我在 Xamarin 中使用 Realm for .NET 时遇到问题。
我可以正常添加、更新和删除对象,但同样的 java,.NET 的 Realm 没有 copyFromRealm 对象。
我的方法只是打开领域,选择数据,我需要在数据层之外处理这个对象(我正在使用一个类来查询数据并在另一个层中验证它)。
但即使使用 DeepCloner (nuget),领域也会抛出异常,指责领域已关闭,但我使用 .NET 的 using() 指令将其关闭。
我可以在关闭和操作该对象之前从领域复制一个对象。我只需要读取对象中的数据,而不是再次将其写入 Realm。
using(var realm = Realm.GetInstance(config))
{
var data = realm.All<DadosUsuario>().FirstOrDefault().ShallowCopy();
}
【问题讨论】:
-
非常感谢,这解决了我的问题。非常感谢。你能回答给你学分吗?您能解释一下为什么从 AutoMapper 改为 Newtonsoft 吗?
-
AutoMapper是一个很棒的库。像 AutoMapper、DeepClone 这样的库的核心问题......它们是否以通用方式工作,它们复制的“记录”数量有多快,以及它们需要多少设置。我已经完成了一系列与 my 需求相关的基准测试,并且使用 Json.Net 进行深度复制的速度通常与其他的一样快,同样对于 my 数据,您可以完全不同......而且它也适用于 RealmObject 子类; R/W 属性很简单,但它处理领域IList<T>并横穿链接的对象树。 -
还有许多其他考虑因素,例如它们在 GC 上的难度(它们是否创建了一堆临时/过渡对象)等等。我敢肯定在某些情况下会击败其他用于特定使用模式的情况,在这些情况下,通常通过分析应用程序发现,您可以在不同的库中子库或仅手动处理创建副本,因此您可以将代码调整为您的使用模式...... .
-
非常感谢您的解释。考虑到我的情况,它的工作方式完美无缺,所以对我来说没关系。但是当我需要时,我会使用我的测试用例制作一些配置文件和基准测试。再次,非常感谢。