Objet dupliqué Entity Framework et toutes les propriétés enfant

Structure exemple

public class Page
{
    public int PageId { get; set; }
    public string Prop1 { get; set; }
    public string Prop2 { get; set; }
    public virtual List<Section> Sections { get; set; }
}

public class Section
{
    public int SectionId { get; set; }
    public int PageId { get; set; }
    public virtual Page Page { get; set; }
    public virtual List<Heading> Headings { get; set; }
}

public class Heading
{
    public int HeadingId { get; set; }
    public int SectionId { get; set; }
    public virtual Section Section { get; set; }
}

Il est intéressant de noter que ma structure a plus de niveaux que cela, mais cela devrait être suffisant pour expliquer ce que je suis en train de réaliser.

Donc je charge mon Page objet que je puis Clone de l'objet et de faire quelques changements mineurs pour les propriétés de Page c'est à dire Prop1Prop2

Page pageFromDb = getPageMethod();
Page clonedPage = pageFromDb.Clone();
clonedPage.Prop1 = clonedPage.Prop1 + " Cloned";
addPageMethod(clonedPage); //Adds the page to db

Dans l'exemple ci-dessus clonedPage structure est fine et une nouvelle Page est ajouté à la base de données. Cependant, je crois, parce que l'identité de l'enfant, les objets sont ensemble et la relation de l'enfant est toujours un à plusieurs. L'objet d'origine pageFromDb perdrez tous les enfants en tant que cadre de l'entité au lieu de créer de nouveaux Section d'objets pour la cloné Page sera mise à jour du Section.PageId à la nouvelle page insérée.

Je crois qu'un correctif pour ce serait de foreachforeachetc. et de définir toutes les Id de 0 avant de l'insérer ensuite, entity framework créer de nouveaux dossiers foreach objet. Est-il un moyen plus facile/mieux pour cloner un objet dans une entité cadre de l'environnement.?

source d'informationauteur Ashley Medway