2017-06-07 16 views
0

私はこのクラスをCart_Recordとします。私はPrimaryKeyを更新したい。これを行うには、オブジェクトを新しいオブジェクトにコピーして、CartLinesをコピーしてIDを更新しようとしています。私は、問題のキューやドキュメントが私を助けてくれることはあまりありませんでした。異なるプライマリ・キーでオブジェクトを複製する方法

public class Cart_Record : RealmObject 
{ 
    public Cart_Record() { } 

    public Cart_Record(IList<Cart_Line> cartLines, int id) 
    { 
     ID = id; 
     foreach (var cartLine in cartLines) 
      CartLines.Add(App.RealmDB.Find<Cart_Line>(cartLine.ProductId)); 
    } 

    [PrimaryKey] 
    public int ID { get; set; } 

    public IList<Cart_Line> CartLines { get; } 
} 

私は例外、特にRealmObjectManagedByAnotherRealmExceptionを得続けるしかし、私はこの

var appCart = App.RealmDB.All<Cart_Record>().First(); 

App.RealmDB.Write(() => 
{ 
    var cartLines = new List<Cart_Line>(appCart.CartLines); 
    App.RealmDB.Remove(App.RealmDB.Find<Cart_Record>(appCart.ID)); 
    App.RealmDB.Add<Cart_Record>(new Cart_Record(cartLines, serverCart.ID)); 
}); 

をしようとしています。私はカートレインオブジェクトをレルムに、新しいオブジェクトのカートラインリストに読み込んでいないので、どのように理解できません。

私は間違っていますか?

ありがとうございます。

編集:動作するものを見つけましたが、他の誰かがより良い方法を持っているかどうかを確認したいと思います。これは私のために働くものです。

var appCart = App.RealmDB.All<Cart_Record>().First();      
App.RealmDB.Write(() => 
{ 
    var cartLines = new List<Cart_Line>(appCart.CartLines); 
    App.RealmDB.Remove(App.RealmDB.Find<Cart_Record>(appCart.ID)); 
    var newAppCart = App.RealmDB.Add<Cart_Record>(new Cart_Record() { ID = serverCart.ID }); 
    foreach (var cartLine in cartLines) 
     newAppCart.CartLines.Add(cartLine); 
}); 

答えて

1

私はApp.RealmDBは、ボンネットの下に行いますが、あなたは単に元からCartLinesを追加することによって行うことができます達成するために欲しいもの、すぐにレルムAPIを使用してかわからないんだけど更新されたオブジェクト:

// Assume want to change Id from 1 to 2 
var realm = Realm.GetInstance(); 
var original = realm.Find<Cart_Record>(1); 

var updated = new Cart_Record { ID = 2 }; // other properties must be copied here 
foreach (var cart in original.CartLines) 
{ 
    updated.CartLines.Add(cart); 
} 

realm.Write(() => 
{ 
    realm.Remove(original); 
    realm.Add(updated); 
}); 

// updated now has all the original's CartLines 
関連する問題