C# realm.xamarin thows error“;“数据类型不匹配”;即使数据类型相同

C# realm.xamarin thows error“;“数据类型不匹配”;即使数据类型相同,c#,linq,xamarin,xamarin.forms,realm,C#,Linq,Xamarin,Xamarin.forms,Realm,我将realm.xamarin 0.75与xamarin表单一起使用,在执行查询时,我遇到了一个奇怪的错误。问题是 DateTimeOffset fromOffset = new DateTimeOffset(fromDate); DateTimeOffset toOffset = new DateTimeOffset(toDate); var config = DependencyService.Get<IDatabase>().GetConfiguration(); using

我将realm.xamarin 0.75与xamarin表单一起使用,在执行查询时,我遇到了一个奇怪的错误。问题是

DateTimeOffset fromOffset = new DateTimeOffset(fromDate);
DateTimeOffset toOffset = new DateTimeOffset(toDate);
var config = DependencyService.Get<IDatabase>().GetConfiguration();
using (var realm = Realm.GetInstance(config))
{
    return realm.All<Measurements>()Where(o => o.CreatedDateTime >= fromOffset && o.CreatedDateTime <= toOffset).OrderByDescending(o => o.CreatedDateTime).ToList();
}
DateTimeOffset fromOffset=新的DateTimeOffset(fromDate);
DateTimeOffset toOffset=新的DateTimeOffset(toDate);
var config=DependencyService.Get().GetConfiguration();
使用(var realm=realm.GetInstance(config))
{
返回realm.All(),其中(o=>o.CreatedDateTime>=fromOffset&&o.CreatedDateTime o.CreatedDateTime).ToList();
}
错误是:

UNHANDLED EXCEPTION:
06-06 17:46:15.337 I/MonoDroid(26505): Realms.RealmException: Data type mismatch
06-06 17:46:15.337 I/MonoDroid(26505):   at Realms.NativeCommon.ExceptionThrower (NativeException exception) [0x00007] in <filename unknown>:0 
06-06 17:46:15.337 I/MonoDroid(26505):   at (wrapper native-to-managed) Realms.NativeCommon:ExceptionThrower (Realms.NativeException)
06-06 17:46:15.337 I/MonoDroid(26505):   at (wrapper managed-to-native) Realms.NativeQuery:timestamp_milliseconds_greater_equal (Realms.QueryHandle,intptr,long)
06-06 17:46:15.337 I/MonoDroid(26505):   at Realms.RealmResultsVisitor.AddQueryGreaterThanOrEqual (Realms.QueryHandle queryHandle, System.String columnName, System.Object value) [0x000b6] in <filename unknown>:0 
06-06 17:46:15.337 I/MonoDroid(26505):   at Realms.RealmResultsVisitor.VisitBinary (System.Linq.Expressions.BinaryExpression b) [0x0016c] in <filename unknown>:0 
06-06 17:46:15.337 I/MonoDroid(26505):   at Realms.ExpressionVisitor.Visit (System.Linq.Expressions.Expression exp) [0x000d2] in <filename unknown>:0 
06-06 17:46:15.337 I/MonoDroid(26505):   at Realms.RealmResultsVisitor.VisitCombination (System.Linq.Expressions.BinaryExpression b, System.Action`1 combineWith) [0x00012] in <filename unknown>:0 
06-06 17:46:15.337 I/MonoDroid(26505):   at Realms.RealmResultsVisitor.VisitBinary (System.Linq.Expressions.BinaryExpression b) [0x0000c] in <filename unknown>:0 
06-06 17:46:15.337 I/MonoDroid(26505):   at Realms.ExpressionVisitor.Visit (System.Linq.Expressions.Expression exp) [0x000d2] in <filename unknown>:0 
06-06 17:46:15.337 I/MonoDroid(26505):   at Realms.RealmResultsVisitor.VisitMethodCall (System.Linq.Expressions.MethodCallExpression m) [0x0006a] in <filename unknown>:0 
06-06 17:46:15.337 I/MonoDroid(26505):   at Realms.ExpressionVisitor.Visit (System.Linq.Expressions.Expression exp) [0x000ec] in <filename unknown>:0 
06-06 17:46:15.337 I/MonoDroid(26505):   at Realms.RealmResultsVisitor.VisitMethodCall (System.Linq.Expressions.MethodCallExpression m) [0x000e6] in <filename unknown>:0 
06-06 17:46:15.337 I/MonoDroid(26505):   at Realms.ExpressionVisitor.Visit (System.Linq.Expressions.Expression exp) [0x000ec] in <filename unknown>:0 
06-06 17:46:15.337 I/MonoDroid(26505):   at Realms.RealmResults`1[T].CreateResultsHandle () [0x00037] in <filename unknown>:0 
06-06 17:46:15.337 I/MonoDroid(26505):   at Realms.RealmResults`1[T].get_ResultsHandle () [0x0000d] in <filename unknown>:0 
06-06 17:46:15.337 I/MonoDroid(26505):   at Realms.RealmResults`1[T].GetEnumerator () [0x00000] in <filename unknown>:0 
06-06 17:46:15.337 I/MonoDroid(26505):   at System.Collections.Generic.List`1[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-06 17:46:15.337 I/MonoDroid(26505):   at System.Linq.Enumerable.ToList[TSource] (IEnumerable`1 source) [0x00011] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/System.Core/System/Linq/Enumerable.cs:835 
未处理的异常:
06-06 17:46:15.337 I/MonoDroid(26505):Realms.RealmException:数据类型不匹配
06-06 17:46:15.337 I/MonoDroid(26505):在Realms.NativeCommon.exception浏览器(NativeException异常)[0x00007]中:0
06-06 17:46:15.337 I/MonoDroid(26505):at(包装器本机到托管)领域。NativeCommon:exceptionrower(领域。NativeException)
06-06 17:46:15.337 I/MonoDroid(26505):at(包装器管理到本机)域。NativeQuery:timestamp_毫秒_更大_相等(Realms.QueryHandle,intptr,long)
06-06 17:46:15.337 I/MonoDroid(26505):在Realms.RealmResultsVisitor.AddQueryCreaterAnorEqual(Realms.QueryHandle QueryHandle,System.String columnName,System.Object value)[0x000b6]中:0
06-06 17:46:15.337 I/MonoDroid(26505):在Realms.RealmResultsVisitor.VisitBinary(System.Linq.Expressions.BinaryExpression b)[0x0016c]中:0
06-06 17:46:15.337 I/MonoDroid(26505):在Realms.ExpressionVisitor.Visit(System.Linq.Expressions.Expression)[0x000d2]中:0
06-06 17:46:15.337 I/MonoDroid(26505):在Realms.RealmResultsVisitor.VisitComposition(System.Linq.Expressions.BinaryExpression b,System.Action`1与[0x00012]的组合中:0
06-06 17:46:15.337 I/MonoDroid(26505):在Realms.RealmResultsVisitor.VisitBinary(System.Linq.Expressions.BinaryExpression b)[0x0000c]中:0
06-06 17:46:15.337 I/MonoDroid(26505):在Realms.ExpressionVisitor.Visit(System.Linq.Expressions.Expression)[0x000d2]中:0
06-06 17:46:15.337 I/MonoDroid(26505):在Realms.RealmResultsVisitor.VisitMethodCall(System.Linq.Expressions.MethodCallExpression m)[0x0006a]中:0
06-06 17:46:15.337 I/MonoDroid(26505):在Realms.ExpressionVisitor.Visit(System.Linq.Expressions.Expression)[0x000ec]中:0
06-06 17:46:15.337 I/MonoDroid(26505):在Realms.RealmResultsVisitor.VisitMethodCall(System.Linq.Expressions.MethodCallExpression m)[0x000e6]中:0
06-06 17:46:15.337 I/MonoDroid(26505):在Realms.ExpressionVisitor.Visit(System.Linq.Expressions.Expression)[0x000ec]中:0
06-06 17:46:15.337 I/MonoDroid(26505):位于Realms.RealmResults`1[T].CreateResultsHandle()[0x00037]中:0
06-06 17:46:15.337 I/MonoDroid(26505):在Realms.RealmResults`1[T]。在:0中获取[0x0000d]结果句柄
06-06 17:46:15.337 I/MonoDroid(26505):在Realms.RealmResults`1[T].GetEnumerator()[0x00000]中:0
06-06 17:46:15.337 I/MonoDroid(26505):在/Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/System/Collections/Generic/List.cs:104中的System.Collections.Generic.List`1[T]…ctor(IEnumerable`1 collection)[0x00073]
06-06 17:46:15.337 I/MonoDroid(26505):at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)[0x00011]in/Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/System.Core/System/Linq/Enumerable.cs:835
我估计DateTimeOffset可能是导致问题的原因

我检查了源代码
但是什么也找不到。

我发现了问题。当
RealmObject
(在我的例子中是
Measurements
)的类不是直接从
RealmObject
继承时,就会发生这种情况

我的类
Measurements
继承自一个类
BaseModel
(我创建这个类是为了内部目的),而这个
BaseModel
类继承自
RealmObject

当我删除它并使
度量值
直接从
RealmObject
继承时,我不会抛出异常

根据Dimitris Tavlikos的评论

领域Xamarin不允许以任何方式对模型进行进一步的子类化。只有将CreateObject泛型方法用于直接从RealmObject派生的类时,该方法才有效。


您是否从Realm 0.74.1升级?日期格式发生了变化,所以这可能是问题的一部分。另外,请注意,您的方法返回的值将是一个无效的
RealmObject
实例的
列表,也就是说,您将无法访问属性,因为
领域
using
语句关闭。是的,我今天从0.74升级到了0.75我卸载了该领域(和it依赖项,并重新安装到0.75),仍然没有解决。是的,这是他们文档的一部分:“Realm Xamarin不允许以任何方式进一步子类化模型。CreateObject泛型方法仅在用于直接从RealmObject派生的类时才有效。”.这里:除了使其更灵活外,短期内我们正在改进weaver对这种情况的检测,以向您提供更好的错误信息。