2017-10-12 9 views
0

Realm Xamarin(C#)のLINQクエリに問題があります。"Date type mismatch" LINQクエリのRealmException

次のクラスを作成し、人がnullであるすべてのDogModelオブジェクトを取得しようと、私は「日付型の不一致」RealmException取得:私が得ることを期待する二LINQクエリで

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 

を1つの項目(Id 2のDogModel)でリストするが、代わりに "Date type mismatch" RealmExceptionがスローされる。

どうしてですか?それを行う方法はありますか?

+0

おそらく、複雑な所有者オブジェクトではなく、null可能なLongとしてOwnerIdを格納する方がよいでしょう。次に、OwnerIdがnullであるかどうかを確認します。 – akerra

+0

それは可能かもしれませんが、それは一種の不器用な解決策であるようです。それはちょうどうまくいくはずですよね?それは私にバグのようです... – Jonas

答えて

0

更新11/14/17:この修正はRealm .NET 2.1.0でリリースされました。

これは本当にRealm Xamarin SDKのバグです。私はそれを追跡する問題を開いた:https://github.com/realm/realm-dotnet/issues/1596。現時点では回避策はありませんが、正しいと思います。修正されたら、追加のプロパティを追加しなくても機能するはずです。

+0

恐ろしい!こういうことに素早く反応してくれてありがとう:-) – Jonas