问题标签 [realm-net]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1703 浏览

c# - realm.xamarin 抛出错误:不支持“包含”方法。'任何'都一样

我正在编写一个查询,该查询需要在 realm.xamarin linq 查询中使用类似“WHERE IN”的子句。以下是我尝试的查询:

也试过这个Contains

但这会引发错误:

解决方案是什么?

编辑 :

这是错误的堆栈跟踪:

未处理的异常:06-07 15:04:55.097 I/MonoDroid(24526):System.NotSupportedException:不支持“任何”方法 06-07 15:04:55.097 I/MonoDroid(24526):在 Realms.RealmResultsVisitor。 VisitMethodCall (System.Linq.Expressions.MethodCallExpression m) [0x00596] in :0 06-07 15:04:55.097 I/MonoDroid(24526): 在 Realms.ExpressionVisitor.Visit (System.Linq.Expressions.Expression exp) [0x000ec ] 在:0 06-07 15:04:55.097 I/MonoDroid(24526):在 Realms.RealmResultsVisitor.VisitMethodCall (System.Linq.Expressions.MethodCallExpression m) [0x0006a] 在:0 06-07 15:04:55.097 I /MonoDroid(24526): 在 Realms.ExpressionVisitor.Visit (System.Linq.Expressions.Expression exp) [0x000ec] 在:0 06-07 15:04:55.097 I/MonoDroid(24526): 在 Realms.RealmResults1[T].CreateResultsHandle () [0x00037] in <filename unknown>:0 06-07 15:04:55.097 I/MonoDroid(24526): at Realms.RealmResults1[T].get_ResultsHandle () [0x0000d] in :0 06-07 15:04:55.097 I/MonoDroid(24526): 在 Realms.RealmResults 1[T].GetEnumerator () [0x00000] in <filename unknown>:0 06-07 15:04:55.097 I/MonoDroid(24526): at System.Collections.Generic.List1[T]..ctor (IEnumerable 1 collection) [0x00073] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/collections/generic/list.cs:104 06-07 15:04:55.098 I/MonoDroid(24526): at System.Linq.Enumerable.ToList[TSource] (IEnumerable1 source) [0x00011] in /用户/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/System.Core/System/Linq/Enumerable.cs:835 06-07 15:04:55.098 I/MonoDroid(24526):在 VHS .MobileApp.Mediq.DataAccess.ObservationDatabase+<>c__DisplayClass13.b__8 () [0x00147] in d:\rwagh\mediq\Code\VHS.MobileApp.Mediq.DataAccess\ObservationDatabase.cs:65 06-07 15:04:55.098 我/MonoDroid(24526):1[TResult].InnerInvoke () [0x00012] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/threading/Tasks/Future.cs:686 06-07 15:04:55.098 I/MonoDroid(24526): at System.Threading.Tasks.Task.Execute () [0x00016] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/threading/Tasks/Task.cs:2523 06-07 15:04:55.098 I/MonoDroid(24526): --- End of stack trace from previous location where exception was thrown --- 06-07 15:04:55.098 I/MonoDroid(24526): at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143 06-07 15:04:55.098 I/MonoDroid(24526): at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00047] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:201 06-07 15:04:55.098 I/MonoDroid(24526): at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:170 06-07 15:04:55.098 I/MonoDroid(24526): at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:142 06-07 15:04:55.098 I/MonoDroid(24526): at System.Runtime.CompilerServices.TaskAwaiter在 /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system 中的 System.Threading.Tasks.Task 1[TResult].GetResult () [0x00000] /runtime/compilerservices/TaskAwaiter.cs:372

编辑 2:

试过:var IdsToMatch = observations.Select(x => x.Id).AsQueryable() 根据https://github.com/realm/realm-dotnet/blob/7187390529201ba843cd105fc6e3e11acb0c6217/Realm.Shared/linq/RealmResultsVisitor.cs#L121

但这也没有用。

0 投票
1 回答
217 浏览

xamarin - Realm for Xamarin C# 中的字符串长度属性

在 EF 它StringLengthSQLite.net它的中,MaxLength但我似乎无法弄清楚是否存在用于在领域中设置预期字符串长度的属性。

有人知道这是什么吗?

0 投票
2 回答
995 浏览

c# - 如何在 Realm 对象中实现 Nullable 属性(更准确地说是 DateTime)?

这个问题很简单,关于如何解决这个错误:

Fody/RealmWeaver:类“X”字段“Y”是尚不支持的“System.Nullable`1”。

这是一个DateTime?属性。确实支持可为空的原始类型

我知道 Java 版本支持null值。这是关于 Realm .NET 的。我想知道除了做旧的事情之外是否还有其他方法DateTime SomeNullablePropertybool HasSomeNullableProperty

0 投票
1 回答
142 浏览

c# - Realm 中并行读写的结果不一致

也许我遗漏了一些东西,但是在从同一个对象的 Realm 并行读取和写入时,我得到了一些奇怪的结果。

我第一次遇到这个是在一个更大的项目中,但现在才设法在一个测试项目中重现它。

场景:创建一个RealmObject具有两个DateTimeOffset字段的对象,然后每分钟更新一次。另一个线程每 10 秒读取一次并输出值。

我将首先显示输出,因为它最相关。括号中的时间是记录输出的时间。剩下的是标识符(READER/WRITER),然后是RealmObject.

发生的情况是,在成功写入后,读取器读取旧值一段时间,然后读取新值,然后再次读取旧值。如果我重新启动应用程序,那么一切都会好起来的,当然,有一段时间。

//阅读器开始阅读。输出是正确的

[0:] (10:05:44.656) 读者:[{"LastSyncTime":"2016-07-17T22:04:45.384+00:00","LastChangeDate":"2016-07-17T22:09:45.384+ 00:00","IsManaged":true}] [0:] (10:05:54.656) 读者:[{"LastSyncTime":"2016-07-17T22:04:45.384+00:00","LastChangeDate" :"2016-07-17T22:09:45.384+00:00","IsManaged":true}] [0:] (10:06:04.657) 读者:[{"LastSyncTime":"2016-07-17T22: 04:45.384+00:00","LastChangeDate":"2016-07-17T22:09:45.384+00:00","IsManaged":true}]

//Writer进来并更新值。

[0:] (10:06:07.523) WRITER: {"LastSyncTime":"2016-07-17T22:06:07.521+00:00","LastChangeDate":"2016-07-17T22:11:07.523+00 :00","IsManaged":true}

//Reader 读取不正确(OLD)值一段时间

[0:] (10:06:14.661) 读者:> [{"LastSyncTime":"2016-07-17T22:04:45.384+00:00","LastChangeDate":"2016-07-17T22:09:45.384 +00:00","IsManaged":true}] [0:] (10:06:24.678) 读者:[{"LastSyncTime":"2016-07-17T22:04:45.384+00:00","LastChangeDate ":"2016-07-17T22:09:45.384+00:00","IsManaged":true}] [0:] (10:06:34.678) 读者: [{"LastSyncTime":"2016-07-17T22 :04:45.384+00:00","LastChangeDate":"2016-07-17T22:09:45.384+00:00","IsManaged":true}]

//Reader 突然读取到正确的值

[0:] (10:06:44.678) 读者:[{"LastSyncTime":"2016-07-17T22:06:07.521+00:00","LastChangeDate":"2016-07-17T22:11:07.523+ 00:00","IsManaged":true}]

//Reader 回退到以前的值 (????)

[0:] (10:06:54.678) 读者:[{"LastSyncTime":"2016-07-17T22:04:45.384+00:00","LastChangeDate":"2016-07-17T22:09:45.384+ 00:00","IsManaged":true}] [0:] (10:07:04.678) 读者:[{"LastSyncTime":"2016-07-17T22:04:45.384+00:00","LastChangeDate" :"2016-07-17T22:09:45.384+00:00","IsManaged":true}]

编码:

写作部分:

读者:

不知道会发生什么。也许一些Realm的家伙可以澄清这一点。

更新

做了一些更多的测试,显然当读者和作者在同一个时一切正常Thread。在时间戳之后的日志中添加了托管线程 ID。因此,您可以在下面看到在线程 11 上运行的阅读器(与作者的相同)如何正常工作。但是在不同线程上运行的读取器会输出旧值:

//更新前(正确)

[0:] (10:56:53.679,11) 读者:[{"LastSyncTime":"2016-07-17T22:55:55.573+00:00","LastChangeDate":"2016-07-17T23:00: 55.576+00:00","IsManaged":true}]

//更新在线程11上完成

[0:] (10:56:55.552,11) WRITER: {"LastSyncTime":"2016-07-17T22:56:55.552+00:00","LastChangeDate":"2016-07-17T23:01:55.553 +00:00","IsManaged":true}

//线程 11 上的读取器输出正确的值

[0:] (10:57:03.702,11) 读者:[{"LastSyncTime":"2016-07-17T22:56:55.552+00:00","LastChangeDate":"2016-07-17T23:01: 55.553+00:00","IsManaged":true}]

//再次,阅读器在线程 11 上。正确输出。

[0:] (10:57:13.702,11) 读者:[{"LastSyncTime":"2016-07-17T22:56:55.552+00:00","LastChangeDate":"2016-07-17T23:01: 55.553+00:00","IsManaged":true}]

//线程 12 上的读取器输出不正确的结果

[0:] (10:57:23.703,12) 读者:[{"LastSyncTime":"2016-07-17T22:23:19.674+00:00","LastChangeDate":"2016-07-17T22:28: 19.676+00:00","IsManaged":true}]

//再次,阅读器在线程 11 上。正确输出。

[0:] (10:57:33.703,11) 读者:[{"LastSyncTime":"2016-07-17T22:56:55.552+00:00","LastChangeDate":"2016-07-17T23:01: 55.553+00:00","IsManaged":true}]

0 投票
2 回答
1899 浏览

.net - Realm for Xamarin 中的简单迁移

Xamarin 领域的文档说:

Realm 将自动执行无需处理即可完成的迁移,例如添加和删除类或从类中添加和删除属性。对于更复杂的更改,需要进行适当的迁移。我们还没有这方面的 API,但它已在计划中并将很快添加。

但是,即使我只是向模型添加一个新字段,应用程序也会由于所需的迁移而崩溃。

我的问题是:如何利用自动执行的迁移?

0 投票
2 回答
319 浏览

xamarin - Realm dotnet:从 RealmResults 按索引获取元素

我正在使用 Xamarin 和 Realm 作为数据库来实现 android RecycleView。RecycleView 需要按索引访问数据源。有没有办法从 RealmResults 中按索引检索元素?我发现只需调用 realmResults.get(index) 方法就可以在领域 java 中。但显然Realm的dotnet实现没有这样的方法。

同样根据领域文档:

对象不会被复制 - 您会获得对匹配对象的引用列表,并且您可以直接使用与查询匹配的原始对象。

那么仅在 realmresults 上调用 .ToList() 并将此集合用作数据源是否足够优化?

0 投票
1 回答
307 浏览

java - 有没有办法从 Windows 服务器生成 Realm.io 数据库?

我想从 Windows 服务器生成 Realm.io 数据库。我的目标是(通过网络服务)下载它并从移动设备(iOS)上读取它。

那么有没有办法通过控制台应用程序从 Windows 服务器生成 Realm.io 数据库?

我尝试使用 Xamarin Studio 和控制台应用程序项目这样做,但我有一个 System.PlatformNotSupportedException,因为 PC 平台似乎还不受支持(https://github.com/realm/realm-dotnet/issues/509)。

我也想在 java 中这样做,但 Realm.io 似乎“目前不支持 Android 之外的 Java”(https://realm.io/docs/java/latest/)。

用 Xamarin 或 Java 做我想做的事有诀窍吗?

还有其他方法吗?

0 投票
1 回答
135 浏览

xamarin - Realm net:按链接集合替代排序

我有带有链接集合属性的领域对象项目:

而且我需要通过链接的 Properties 集合中的属性对 Item 实体进行排序。像这样的东西(我知道 Realm 不支持它):

无法将属性移动到项目实体,因为不同的项目可以包含不同的属性集,这些属性集也可能随时间而变化。还有其他选择来实现这种排序吗?目前我只看到对内存中的对象进行排序的选项,但在大数据集上可能会占用太多内存。

0 投票
2 回答
496 浏览

c# - 如何使用 Realm 中的 Linq 表达式检查 Nullable 类型的 null?

我想获取未设置 Modified 属性但似乎无法使其与 Realm 一起使用的所有元素。

示例代码:

总是得到System.NotSupportedException: The rhs of the binary operator 'Equal' should be a constant or closure variable expression.System.NotSupportedException: The member 'HasValue' is not supported

我错过了什么吗?有什么好方法可以查看 Realm 的 Linq 实际支持的内容吗?

在 Android 上使用 Realm Xamarin v0.77.1

编辑:

我确实尝试按照评论者的建议创建一个 linq 表达式树。这导致了System.MissingMethodException: Method 'RealmResults'1.get_Provider' not found.异常。

0 投票
2 回答
341 浏览

c# - 如何使用 Realm for Xamarin 实现“获取或创建”查询?

考虑简单的模型:

如何Session通过 ID 获取实例或者null如果它不存在?

那么,它应该如何通过设计来完成呢?