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 :

soucis avec "include"


Sujet :

Entity Framework

  1. #1
    Débutant Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 54
    Points
    54
    Par défaut soucis avec "include"
    Bonjour à tous , j'ai commencé un projet avec silverlight 4 et j'ai choisi de travaillé avec entity framework , j'ai trouvé la clause include qui me récupérer les données des clés étrangéres ce qui m'a parfaitement convenu mais en testant mon application j'ai eut tout d'un coup plusieurs erreurs qui apparaissent et l'une d'entre elles je n'ai pas put la régler :

    Violation de la contrainte Unique Key. Impossible d'insérer en double dans l'objet "Sous Famille"
    Ceci se produit quand j'essaye de modifier le champ d'une entité qui représente une clé etrangére .

    Est je mal utilisé le include ou est ce une de ces conséquences je suis perdue

    Merci de vos réponses par avance

  2. #2
    Débutant Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 54
    Points
    54
    Par défaut
    j'ai essayé de détacher toutes les entités qui avait la méme sous famille mais rien y fait ! le probléme serait il car j'utilise un seul data context ?

    merci de m'aider

  3. #3
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    Je ne vois pas de rapport avec include...
    Peux-tu montrer les bouts de code en question ?
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  4. #4
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2010
    Messages : 119
    Points : 202
    Points
    202
    Par défaut
    bonjour,
    Peux tu nous montrer tes requêtes entity qui génèrent ton erreur?? ça serait plus facile pour te dire d'où ton problème vient.

    cordialement

    EDIT: dsl post en même temps...

  5. #5
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Tu fais fausse route... l'UPDATE que tu effectues viol simplement la contrainte que tu as en base (a priori contrainte UNIQUE sur une table)... cherche de ce côté la...
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  6. #6
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par iberserk Voir le message
    Tu fais fausse route... l'UPDATE que tu effectues viol simplement la contrainte que tu as en base (a priori contrainte UNIQUE sur une table)... cherche de ce côté la...
    Cela y ressemble bien en tout cas...
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    En fait ton problème vient du context...

    Tu mets à jour un objet avec ces dépendances, ton objet dépendant n'est pas attaché au contexte du coup il essai de le réinsérer en base ce qui lance l'erreur... (en tout cas c la piste que je te propose avec le peu d'information et l'absence de code )

    Le context que tu utilises pour mettre à jour est ce le même que celui avec lequel tu as récupérer l'objet ? As-tu attacher ton objet pour mettre à jour ?

    Essai de mettre à jour en procédant ainsi :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var entity = dbSet.Find(dto.Id);
    var entry = context.Entry(entity);
    entry.CurrentValues.SetValues(dto);
    context.SaveChanges();
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  8. #8
    Débutant Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 54
    Points
    54
    Par défaut
    merci à vous tous de vos réponse je commencais à déprimer , en fait je veux modifier une entité article qui a une clé étangére IdSousFamilles mais moi j'affiche la référence de la sous famille genre "PC" donc je fais d'abord ca :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    private void idSFamille(InvokeOperation<SOUS_FAMILLES_ARTICLES> sousFamille)
            {
                if (sousFamille == null)
                {
                    RadWindow.Alert(Ressource.ReferenceIncorrecte + "!\n" + Ressource.SaisirReference + ", ou" + Ressource.IndicationFenetreListe, new EventHandler<WindowClosedEventArgs>(idSFamille_Focus));
                }
                else
                {
                    sfamille = (DS.SOUS_FAMILLES_ARTICLES.Where(m => m.ID_SOUS_FAMILLE_ARTICLE == sousFamille.Value.ID_SOUS_FAMILLE_ARTICLE).FirstOrDefault());
                    DS.ARTICLES.ElementAt(position).ID_SOUS_FAMILLE_ARTICLE = sousFamille.Value.ID_SOUS_FAMILLE_ARTICLE;
     
                    tbRefSouFam.MaskedText = sousFamille.Value.REF_SOUS_FAMILLE_ARTICLE;
     
                 }
     
            }

    la c'est pour récupére le id d'aprés la référence tapé par l'utilisateur ensuite dans un bouton valider je fais ca :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
       if (sfamille != null)
                     {
                         for (int i = 0; i < DS.ARTICLES.Count; i++)
                         {
                             if (DS.ARTICLES.ElementAt(i).ID_SOUS_FAMILLE_ARTICLE == sfamille.ID_SOUS_FAMILLE_ARTICLE)
                             {
                                 sfamille = DS.ARTICLES.ElementAt(i).SOUS_FAMILLES_ARTICLES;
                                 break;
                             }
                         }
                     }
     
                         if (sfamille != null && unite != null)
                         {
                             DS.ARTICLES.ElementAt(position).SOUS_FAMILLES_ARTICLES = sfamille;
                             DS.ARTICLES.ElementAt(position).UNITES_MESURES = unite;
                         }
                     }
                     DS.SubmitChanges(submitOperation =>
                     {
     
                         if (submitOperation.HasError)
                         {
                             RadWindow.Alert(Ressource.OperationImpossible + submitOperation.Error.Message);
                             submitOperation.MarkErrorAsHandled();
                         }
                         else
                         {
                             opperation = "";
                             UserControl_ReadOnly(true);
                             Utils.InitBtnFicheArticle();
     
                             if (opperation == Ressource.OperationAjout)
                             {
                                 Naviguer(GoTo.Last);
                                 nouveau = null;
                             }
                             else
                             {
                                 Actualiser_Header_ToolBar();
                             }
     
                         }
                     },  null);
                 }

    pourquoi je penses que c'est un soucis avec le contexte car je fais cette mis à jour grace à appel à une grid de sous familles comme ceci :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      void sousfamille_Closed(object sender, WindowClosedEventArgs e)
            {
                sfamille = ((sender as TidjaraApplication.Liste.P_Fenetre_Liste).DS).SOUS_FAMILLES_ARTICLES.Where(m => m.ID_SOUS_FAMILLE_ARTICLE == s.id_sous_famille_article).FirstOrDefault();
                DomainContextExtensions.Detach((sender as TidjaraApplication.Liste.P_Fenetre_Liste).DS, sfamille);
     
                if (sfamille != null)
                {
                    DS.ARTICLES.ElementAt(position).ID_SOUS_FAMILLE_ARTICLE = sfamille.ID_SOUS_FAMILLE_ARTICLE;
                    tbRefSouFam.MaskedText = sfamille.REF_SOUS_FAMILLE_ARTICLE;
                }
            }

    avec le méme code dans valider et la ca marche grace surement a ca :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     DomainContextExtensions.Detach((sender as TidjaraApplication.Liste.P_Fenetre_Liste).DS, sfamille);

    Qu'en pensez vous? et je n'avais pas ce probléme quand je fesais autrement pour avoir les clés étrangéres ( sans include)

    Merci bcp

  9. #9
    Débutant Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 54
    Points
    54
    Par défaut
    Oui c'est le même contexte avec le quel je fais la récupération et la modification et mon entité est bien attaché a ce domaine en faisant l’exécution pas à pas je la voit bien , ce qui m'intrigue c'est qu'il parle d'insértion dans la table sous famille alors que cette sous famille existe deja ! moi je cherche à mettre à jour la relation entre les deux tables pas la sous famille elle meme !

Discussions similaires

  1. [Système] Soucis avec mes includes
    Par Visstoukette dans le forum Langage
    Réponses: 3
    Dernier message: 29/02/2008, 11h43
  2. [Tableaux] souci avec des simples quotes
    Par Jean Fi dans le forum Langage
    Réponses: 6
    Dernier message: 29/03/2006, 20h13

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