Clonage des données sur Entity Framework

entity-framework

Question

Je crée un logiciel où l'utilisateur peut créer un nouveau produit basé sur un produit plus ancien.

Maintenant, je dois effectuer des opérations de copie / clonage avec Entity Framework. J'ai d'abord commencé à écrire comme ceci:

foreach(sourcedata1 in table1)
{
   ... create new table
   ... copy data
   ... create Guid
   ... add
   foreach(sourcedata2 in table2)
   {
       ... create new table
       ... copy data
       ... create Guid
       ... add       

       ... and so on
   }
}

Le problème est que ce n'est pas une bonne façon de le faire. Existe-t-il un moyen simple de cloner des informations (sauf Guid qui doit être généré pour les nouvelles lignes) ou dois-je tout copier manuellement?

Autre solution

Vous pouvez également utiliser EmitMapper ou AutoMapper pour copier les propriétés.

Réponse acceptée

En utilisant la sérialisation directe, vous pouvez faire ceci:

http://social.msdn.microsoft.com/forums/en-US/adodotnetentityframework/thread/a967b44b-c85c-4afd-a499-f6ff604e2139/

Pour ce faire, utilisez Reflection, mais avec beaucoup plus de code: http://msmvps.com/blogs/matthieu/archive/2008/05/31/entity-cloner.aspx


Réponse populaire

Pour cloner une entité dans Entity Framework, vous pouvez simplement dissocier l'entité du DataContext , puis l'ajouter de nouveau à EntityCollection .

context.Detach(entity);
entityCollection.Add(entity);

Mise à jour pour EF6 + (à partir des commentaires)

context.Entry(entity).State = EntityState.Detached;
entity.id = 0;
entity.property = value;
context.Entry(entity).State = EntityState.Added;
context.SaveChanges();


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow