EsempioEntity Framework oggetto duplicato e tutte le proprietà secondarie
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; }
}
Vale la pena notare che il mio attuale struttura ha più livelli di questo, ma questo dovrebbe essere sufficiente a spiegare quello che sto cercando di realizzare.
Così ho caricare il mio Page
oggetto che poi clonare l'oggetto e fare alcune piccole modifiche alle proprietà di Page
cioè Prop1
, Prop2
Page pageFromDb = getPageMethod();
Page clonedPage = pageFromDb.Clone();
clonedPage.Prop1 = clonedPage.Prop1 + " Cloned";
addPageMethod(clonedPage); //Adds the page to db
Nell'esempio di cui sopra clonedPage
struttura va bene e viene aggiunto un nuovo Page
al database. Tuttavia, credo perché gli ID degli oggetti figlio sono impostati e il rapporto tra i bambini è sempre uno a molti. L'oggetto originale pageFromDb
perderà tutto il figlio come framework di entità anziché creare nuovi oggetti Section
per il clonato Page
aggiornerà lo Section.PageId
alla pagina appena inserita.
Credo che una correzione per questo sarebbe quello di foreach
, foreach
, ecc e impostare tutti i Id di per 0
prima di inserire poi Entity Framework creerà nuovi record oggetto foreach. C'è un modo più semplice/migliore per clonare un oggetto in un ambiente framework entità.?
Che cosa fa il metodo Clone? Sta facendo una copia profonda? Puoi dirgli di non copiare i campi di identificazione? Finché le raccolte sono corrette, EF creerà gli ID per te dopo gli inserimenti. – Tim
@Tim Semplicemente usando AutoMapper in alto 'Pagina' livello oggetto. –
possibile duplicato di [Clonazione dati su Entity Framework] (http://stackoverflow.com/questions/2185155/cloning-data-on-entity-framework) –