我需要复制一个对象及其所有子对象,我现在正在做的是检索对象,进行深度克隆并将所有id放到0(父级和子级)并将其保存回DB,但是在DB中修改原始对象。有没有办法让它变得更简单?
提前感谢您的帮助。 爱丽儿。
修改
我正在使用序列化来获取对象的深层副本,但最奇怪的是这个。我正在序列化对象并将其保存在文件中,然后我反序列化对象并将id放到0,然后我为父和子的某些值进行一些操作来更改原始值,我保存一切正常,但是问题是当我刷新会话时。例如我有这个:
ORIGINAL:
Parent
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类型的集合当我保存值时,Everythings很好,但是当调用flush时,这个额外的语句被执行:
UPDATE Child SET IdParent = null WHERE IdParent = 1
数据库中的原始数据就像这样修改
儿童表:
IdChild | IdParent | Name
--------------------------------------
1 | Null | "Child 1"
2 | 2 | "Child 1 modified"
任何想法???
非常感谢您的帮助。 爱丽儿
编辑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();
答案 0 :(得分:0)