IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entity Framework Discussion :

Dupliquer une entité et conserver les liens de navigation originels


Sujet :

Entity Framework

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut Dupliquer une entité et conserver les liens de navigation originels
    Bonjour à tous,

    Depuis ce matin je me casse la tete pour trouver un moyen de dupliquer une entité tout en conservant ses propriétés de navigation.
    En gros, si j'ai une entity person qui possède une propriété de navigation vers une entity Sexe (relation 0-1) et une autre propriété de navigation de type entitycollection nommée adresses, j'aimerai pouvoir prendre une entité personne nommée Homer Simpson, Sexe Masculin, avec une adresse à springfield et une autre au japon, la dupliquer pour changer le prénom pour Bart, enregistrer et constater en base que Bart Simpson est bien relié au sexe masculin ainsi qu'aux deux adresses qui sont associées à Homer. Bien entendu, Homer est toujours en base, on parle bien d'une duplication simple.

    Je ne trouve pas de moyen de réaliser cette manoeuvre.
    Connaissez vous un mécanisme EF qui permettrai de le réaliser ?
    Merci d'avance

  2. #2
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Citation Envoyé par zax-tfh Voir le message
    Bonjour à tous,
    j'aimerai pouvoir prendre une entité personne nommée Homer Simpson, Sexe Masculin, avec une adresse à springfield et une autre au japon, la dupliquer pour changer le prénom pour Bart, enregistrer et constater en base que Bart Simpson est bien relié au sexe masculin ainsi qu'aux deux adresses qui sont associées à Homer. Bien entendu, Homer est toujours en base
    Tu dois dans un premier temps récupérer l'entité voulu puis changer son EntityState à Added avant d'appliquer les changements en base avec SaveChanges.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var ctx = new ContextPersonnes();
    var pers = ctx.Personnes.Single(p => p.Nom=="Homme");
     
    pers.Id = 2; // remplace par ton id
    pers.Nom = "Bart";
     
    ObjectStateEntry persState = ctx.ObjectStateManager.GetObjectStateEntry(pers);
    persState.ChangeState(EntityState.Added);
     
    ctx.SaveChanges();
    N'oubliez pas le tag et

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Ca fonctionne nickel !
    Juste un bémol pour les relations 0n-0n où il faut faire un load des entitycollection mais avec un coup de Reflection ça passe nickel !
    Merci beaucoup

    EDIT : Ca ne fonctionne pas quand on a une propriété de navigation de type EntityCollection avec de l'autre coté une relation vers une propriété de navigation simple.

    Exemple : une personne peut avoir plusieurs adresses mais une adresse ne peut etre liée qu'à une seule personne.
    Dans ce cas il faudrait cloner les adresses :/

    EDIT 2 : Donc en appliquant le principe de copie d'entity quand on a une relation 0n-01, on copie chaque itération de la collection ensuite on vide l'entity collection et on la reremplit avec les éléments copiés. A la limite, s'il y avait un système automatique pour ça, ce serait vraiment top ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PPT-2007] Dupliquer une image et créer un lien html entre les images source et cible
    Par lucile92 dans le forum VBA PowerPoint
    Réponses: 6
    Dernier message: 24/05/2011, 05h48
  2. [E-03] Insertion d'une ligne en conservant les formules existantes
    Par neosapri dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/03/2009, 13h42
  3. [E-03]Publier un pdf depuis excel via une macro et avec les LIENS
    Par Gaillac dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/10/2008, 09h59
  4. Réponses: 1
    Dernier message: 05/09/2007, 13h54
  5. réaffichage d'une page en conservant les données
    Par tetedeturcq dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/04/2007, 16h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo