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

Silverlight Discussion :

DomainContext Entities migration [Débutant]


Sujet :

Silverlight

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Points : 12
    Points
    12
    Par défaut DomainContext Entities migration
    Bonjour.

    Je me tourne vers vous afin de trouver la meilleure solution au problème suivant.

    Je souhaite passer un objet d'un DomainContext à un autre.

    Voici comment l'application est constituée. Dans chacun des points suivants, j'utilise un DomainContext unique.

    1.
    - J'ai une liste de produits.
    - Pour chaque produit, je peux ouvrir une popup afin de modifier les détails du produit.

    2.
    - Je veux lier un fournisseur déjà présent dans la base de données depuis une seconde popup.
    Ici je souhaite donc récupérer le fournisseur sélectionné puis l'intégrer dans l'autre DomainContext grâce aux fonctions Attach puis Detach ceci afin de pouvoir l'ajouter dans la collection de fournisseurs du produit.

    3.
    - J'ai d'autres "sous-popup" dans le même principe.

    /**/

    De tout évidence, il semble que le fournisseur que j'essaie d'attacher à mon DomainContext existe déjà dedans puisque auparavant j'ai déjà chargé un certain nombre de données qui doivent sans doute contenir ce même fournisseur.
    Donc j'obtiens une exception "An entity with the same identity already exists in the EntitySet"

    Dans d'autre cas j'obtiens l'exception suivante : "Entity cannot be attached to this EntityContainer because it is already attached to another EntityContainer" ou bien "Entity does not exist in the DomainContext".

    Au début j'ai essayé d'utiliser le même DomainContext mais dès lors que je choisissais un fournisseur et que je l'intégrais à mon produit, je ne pouvais plus ouvrir d'autre popups et donc charger d'autres données puisque des modifications avaient été apportées à mon objet produit et donc le DomainContext était vérouillé le temps de valider ou rejeter les modification (le propriété CanLoad = false).

  2. #2
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Points : 12
    Points
    12
    Par défaut
    J'ai constaté que l'objet que je voulais passé d'un DomainContext à un autre existait déjà dans ces deux DomainContext.
    Par conséquent, lorsque je retourne l'objet fournisseur depuis ma popup EF m'indique qu'un autre objet fournisseur existe déjà avec la même identité (la propriété numfournisseur possédant effectivement l'attribut [KEY] dans mon modèle).

    Donc j'ai décidé que si le fournisseur existe déjà dans mon DomainContext je détache le fournisseur existant puis j'attache le fournisseur provenant de l'autre DomainContext.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SelectedFournisseur = this.DomainContext.fournisseurs.SingleOrDefault(f => f.numfournisseur == ((fournisseur)((ChoixFournisseurViewModel)ViewModel).FournisseursCollection.CurrentItem).numfournisseur);
                if (SelectedFournisseur != null)
                    this.DomainContext.fournisseurs.Detach(SelectedFournisseur);
    Ce problème se recoupe avec celui que j'ai exposé ici.

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

Discussions similaires

  1. Entity Framework : à la découverte de Code First Migrations
    Par Hinault Romaric dans le forum Entity Framework
    Réponses: 3
    Dernier message: 06/01/2016, 15h48
  2. Réponses: 11
    Dernier message: 13/09/2013, 19h12
  3. [Migration] linq to sql => linq to entities
    Par anthyme dans le forum Accès aux données
    Réponses: 1
    Dernier message: 25/04/2008, 18h48

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