LINQ查询中的“日期类型不匹配”RealmException

时间:2017-10-12 20:09:11

标签: c# linq xamarin realm

我在使用Realm Xamarin(C#)进行LINQ查询时遇到问题。

当创建以下类,并尝试获取Person为null的所有DogModel对象时,我得到“日期类型不匹配”RealmException:

public class DogModel : RealmObject
{
    [PrimaryKey]
    public long Id { get; set; }
    public PersonModel Owner { get; set; }
}

public class PersonModel : RealmObject
{
    [PrimaryKey]
    public long Id { get; set; }
}

var p1 = new PersonModel();
p1.Id = 1;

var d1 = new DogModel();
d1.Id = 1;
d1.Owner = p1;

var d2 = new DogModel();
d2.Id = 2;
d2.Owner = null;

var _realm = Realm.GetInstance();
_realm.Write(() =>
{
    _realm.Add(p1, true);
    _realm.Add(d1, true);
    _realm.Add(d2, true);
});

var data1 = Realm.GetInstance().All<DogModel>()
    .ToList(); // This works

var data2 = Realm.GetInstance().All<DogModel>()
    .Where(x => x.Owner == null)
    .ToList(); // This does not work

在第二个LINQ查询中,我希望得到一个包含1个项目的列表(带有Id 2的DogModel),而是抛出“日期类型不匹配”的RealmException。

为什么会这样?有办法吗?

1 个答案:

答案 0 :(得分:0)

更新11/14/17 :已针对Realm .NET 2.1.0发布了此修复程序。

这确实是Realm Xamarin SDK中的一个错误。我已经打开了一个问题来跟踪它:https://github.com/realm/realm-dotnet/issues/1596。目前还没有解决方法,但你是对的 - 当它修复后,它应该可以正常工作而不需要添加额外的属性。