2017-10-12 81 views
0

我在使用Realm Xamarin(C#)進行LINQ查詢時遇到了問題。「日期類型不匹配」在LINQ查詢中出現RealmException

當創建以下類,並嘗試獲取所有DogModel對象,其中人是空的,我得到一個「Date類型不匹配」 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。

爲什麼會發生這種情況?有沒有辦法做到這一點?

+0

可能最好將OwnerId存儲爲可空的長整型而不是複雜的Owner對象。然後檢查OwnerId是否爲空。 – akerra

+0

這將是可能的,但它似乎是一種笨拙的解決方案。它應該只是工作,對吧?這似乎是一個錯誤... – Jonas

回答

0

更新17年11月14日:已修復此問題已與Realm .NET 2.1.0發佈。

這確實是Realm Xamarin SDK中的一個bug。我已經打開了一個問題來跟蹤它:https://github.com/realm/realm-dotnet/issues/1596。目前沒有解決方法,但是你是對的 - 當它被修復時,它應該只是在不添加額外屬性的情況下工作。

+0

太棒了!感謝您對此做出如此快速的迴應:-) – Jonas