Мне нужно продублировать объект и все его дочерние элементы. Теперь я извлекаю объект, создаю глубокий клон и устанавливаю все идентификаторы в 0 (родительский и дочерний) и сохраняю его обратно в БД, но исходный объект изменяется в БД. Есть ли способ сделать это проще?
Заранее спасибо за помощь.
Ariel.
EDIT
Я использую сериализацию для получения глубокой копии объекта, но самое странное в этом. Я сериализую объект и сохраняю его в файле, затем десериализую объект и устанавливаю идентификаторы в 0, затем я делаю некоторые операции для некоторых значений родительского и дочернего элементов, чтобы изменить исходные значения, я сохраняю все нормально, но проблема в том, когда я сбрасываю сессию. например у меня есть это:
ОРИГИНАЛ:
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. Когда я сохраняю значения, все в порядке, но когда вызывается сброс, выполняется этот дополнительный оператор:
ОБНОВЛЕНИЕ ДЕТАЛЯ SET IdParent = ноль, ГДЕ IdParent = 1
И исходные данные в БД изменяются следующим образом
СТОЛ ДЛЯ РЕБЕНКА:
IdChild | IdParent | Name
--------------------------------------
1 | Null | "Child 1"
2 | 2 | "Child 1 modified"
Есть идеи ???
Большое спасибо за любую помощь.
Ariel
РЕДАКТИРОВАТЬ 2
Методы, которые я использую
сериализации:
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();