Как глубоко копировать сущность

Я нашел этот фрагментВот:

public static T DeepClone<T>(this T obj)
    {
        using (var ms = new MemoryStream()) {
            var bf = new BinaryFormatter();
            bf.Serialize(ms, obj);
            ms.Position = 0;
            return (T)bf.Deserialize(ms);
        }
    }

Который говорит, что мы можем сделать глубокое копирование всех связанных объектов через эту вещь.

Я пытаюсь сделать копию, как это:

db.Detach(myEntity); 
myEntity.EntityKEy = null;
Entity newEntity = new Entity();
newEntity = DeepClone<Entity>(Entity);
db.Entities.AddObject(newEntity);
db.SaveChanges();

ИТ работает, но все равно не копирует вложенные \ связанные записи. что я тут не так делаю?

У меня есть эта структура Entity-> ChildEntity -> ChildChildEntity
-> - один ко многим
поэтому я предполагаю, что когда я копирую сущность, она также копирует все дочерние записи.

ОБНОВИТЬ: После предложений я сделал это:

Entity newEntity = new Entity();
Eneity Entity = db.Include("ChildEntity").Where(p=>p.Id==Id).Single();
newEntity = DeepClone<Entity>(Entity);
db.Detach(myEntity); 
myEntity.EntityKEy = null;
db.Entities.AddObject(newEntity);
db.SaveChanges();

Получение исключения в строке AddObject:

Объект с таким же ключом уже существует в ObjectStateManager. ObjectStateManager не может отслеживать несколько объектов с одним и тем же ключом.

Ответы на вопрос(4)

Ваш ответ на вопрос