Cómo copiar en profundidad una entidad

Encontré este fragmentoaqu:

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);
        }
    }

Lo que dice que podemos hacer una copia profunda de todos los objetos relacionados a través de esta cosa.

Estoy tratando de hacer una copia como esta:

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

IT funciona, pero aún no copia ningún registro anidado \ relacionado. ¿Qué hago mal aquí?

Tengo esta estructura Entity-> ChildEntity -> ChildChildEntity
-> - uno a muchos
so supongo que cuando copio entidad también copiará todos los registros secundarios.

ACTUALIZAR Después de las sugerencias, hice esto:

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();

Obteniendo una excepción en la línea AddObject:

Ya existe un objeto con la misma clave en ObjectStateManager. ObjectStateManager no puede rastrear varios objetos con la misma clave.

Respuestas a la pregunta(8)

Su respuesta a la pregunta