2017-06-28 15 views
0

私持っている私は、レルムデータベースに更新とxamarin分野で削除

JSON

"listActivityTypeMaster": [ 
    { 
     "id": "NV_22_06", 
     "name": "NV_22_06" 
    }, 
    { 
     "id": "POC", 
     "name": "POC" 
    } 
] 

クラスを追加し、更新しています次のJSONそのJSON上記店舗

public class ActivityType : RealmObject, IEntity 
{ 
    [PrimaryKey] 
    public string id { get; set; } 
    public string name { get; set; } 


} 

作成すると、私は次のレルム文を使用しています。

realm.WriteAsync(tempRealm =>{ 


    tempRealm.Add(data, true); 


}); 

は、今私が欲しいものを私のJSONは、1つのエントリを削除することによって変更されますされている場合、私はtempRealm.Add(data, true);

"listActivityTypeMaster": [ 

    { 
     "id": "POC", 
     "name": "POC" 
    } 
] 

を発射するときに、私の分野は、そのエントリを削除する必要があります私はtempRealm.Add(data, true);がレコードを更新するためであり、それは新しいを追加することを理解しません主キーのエントリが存在しない場合は、それを置き換えます。 プライマリキーが存在しない場合、レルムからそのレコードを削除する方法はあります

答えて

1

これは不可能であり、それが望ましい場合はほとんどありません。この問題を回避するには、更新後に次のコマンドを実行します。

var activities = realm.All<ActivityType>().ToArray(); 
var ids = new HashSet<string>(data.Select(d => d.id)); 
realm.Write(() => 
{ 
    foreach (var activity in activities) 
    { 
     if (!ids.Contains(activity.Id)) 
     { 
      realm.Remove(activity); 
     } 
    } 
}); 
関連する問題