私は今オブジェクトを取得し、深いクローンを作成し、すべてのidsを0(親と子)にして元に戻して、オブジェクトとそのすべての子を複製する必要があります。 DBは元のオブジェクトがDB内で変更されます。簡単にする方法はありますか?nhibernateで重複を挿入する
ご協力いただきありがとうございます。 Ariel。
EDIT
私は、オブジェクトのディープコピーを取得するために、シリアライズを使用していますが、奇妙なことはこれです。私はオブジェクトをシリアル化してファイルに保存した後、オブジェクトを逆シリアル化してidsを0にしてから、親と子のいくつかの値に対して元の値を変更するための操作をいくつか行います。問題は私がセッションをフラッシュするときです。
ORIGINAL:
MODIFIEDParent
IdParent = 1
Name = "Parent"
Child 1
IdChild = 1
IdParent = 1
Name = "Child 1"
:
Parent = 0
Name = "Parent"
Child 1
IdChild = 0
IdParent = null
Name = "Child 1 modified"
親は私が細かい値何もかも年代を保存するタイプのIListのコレクションを持っていますが、フラッシュが呼び出されたときに、例えば、私はこれを持っていますこの追加の文が実行されます。
UPDATE子SET IdParent = null WHERE IdParent = 1
そして、DB内の元のデータは、この
子テーブルのように変更されます。
IdChild | IdParent | Name
--------------------------------------
1 | Null | "Child 1"
2 | 2 | "Child 1 modified"
任意のアイデア?
ありがとうございました。 アリエル
EDIT 2
私が使用している方法
SERIALIZE:
デシリアライズStream archivo = File.Create(rutaArchivo);
BinaryFormatter serializador = new BinaryFormatter();
serializador.Serialize(archivo, objetoASerializar);
archivo.Close();
:元のオブジェクトを取得する場合
Stream archivo = File.OpenRead(rutaArchivo);
BinaryFormatter serializador = new BinaryFormatter();
T objetoDeserializado = (T)serializador.Deserialize(archivo);
archivo.Close();
はあなたが私達にあなたのシリアライズ/デシリアライズコードを表示することができます: