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 :

[C# FW4] Relation N-N - Perte des informations lors de la lecture.


Sujet :

Entity Framework

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut [C# FW4] Relation N-N - Perte des informations lors de la lecture.
    Bonjour @ tous,

    J'ai une entité avec une propriété vers une autre table en many-to-many.
    Elle qui est bien renseignée suite à ma création.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var myEnt = new Ent();
    myEnt.id = 1;
    ...
    myEnt.relations = new System.Data.Objects.DataClasses.EntityCollection<relations>();
      foreach (DictionaryEntry item in myObj2.relations)
                    myEnt.relations.Add(new relations { ID = (int)item.Key, TITRE = item.Value.ToString() } );
    myEnt
    En debug, j'ai bien mes relations. Aucun soucis. Je peux faire mon SaveChanges() et les données sont toutes écrites.

    Seulement, lorsque je veux les récupérer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myEnt= nl.myTable.Where(p => p.id == idParam).FirstOrDefault();
    Il me charge bien toutes les propriétés basiques correctement, mais pas mes relations.
    Sur le count de l'objet, il me met:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Count	'myEnt.relations.Count' a levé une exception de type 'System.ObjectDisposedException'	int {System.ObjectDisposedException}
    J'ai essayé de les recharger manuellement moi même:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //foreach (relations item in myEnt.relations) myEnt2.relations.Add(item);
    mais rien à faire, la propriété doit être lockée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    EntityCollection n'a pas pu être initialisé, car le gestionnaire de relations de l'objet auquel EntityCollection appartient est déjà attaché à un ObjectContext. 
    La méthode InitializeRelatedCollection doit uniquement être appelée pour initialiser un nouveau EntityCollection pendant la désérialisation d'un graphique d'objets.
    Est ce que quelqu'un à une idée ?

    Merci d'avance.

  2. #2
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    Je viens de découvrir que cette donnée est perdue lors du retour de la fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            public static myTable getEnt(int id) {
                myTable  nd = null;
                using (myAppEntities nl = new myAppEntities()) {
                    if (id > 0) {
                        nd = nl.myTable .Where(p => p.ID == id).FirstOrDefault();
                        if (nd != null)
                            return nd;
                    }
                }
                return nd;
            }
    myTable myEnt = myClass.getEnt(idTmp);
    Mon point d'arret sur le return m'indique bien les relations. Par contre, celui sur myEnt me retourne une erreur.

  3. #3
    Membre émérite
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Par défaut
    Salut,

    Pour commencer :
    Est ce que tu as essayé "Include" : Loading Related Entities

  4. #4
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    Bonjour katkiller,

    Nos messages se sont croisés.
    Non, mais pas besoin vu que le résultat du where les retourne bien (tu confirmes ?).
    C'est au niveau de la récupération du retour de la fonction que ça coince.

  5. #5
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    J'ai malgré tout essayé ta solution, et ça fonctionne.
    Merci beaucoup.

    Par contre, j'ai un problème de rédaction.
    Dans ton lien, il donne plusieurs syntaxes différentes. Mais moi, il n'y en a qu'une qui veux bien compiler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nd = nl.myTable.Insert("relations") .Where(p => p.ID == id).FirstOrDefault();
    Je ne peux ni mettre une arborescence d'expression, ni mettre le Insert() après le Where().

    Ca m'intrigue, Peux tu m'éclairer ?
    Pour info, je suis en FW 4.5.1 et utilise un EDMX.
    [assembly: EdmSchemaAttribute()]

  6. #6
    Membre émérite
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Par défaut
    Citation Envoyé par dacid Voir le message
    Dans ton lien, il donne plusieurs syntaxes différentes. Mais moi, il n'y en a qu'une qui veux bien compiler
    Problème de version d'EF ou juste des "using" manquant !

    Citation Envoyé par dacid Voir le message
    Pour info, je suis en FW 4.5.1 et utilise un EDMX.
    Tu veux dire que tu utilises le Framework .NET 4.5.1 ?
    Mais quel est ta version d'entity framework ?

  7. #7
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    Voici mes using:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using AdminToile.Admin;
    using System.Data.Objects.DataClasses;
    using System.Collections;
    J'ai rajouté System.Data.Entity comme indiqué dans ton lien, mais ça ne change rien.

    La version d'entity décrite dans le web.config est fiable ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    Si oui, j'ai la 4. Version du runtime de la DLL v4.0.30319

    Selon ton lien, j'ai un ancêtre d'entity. C'est surement pour ça que je ne peux pas les Linqer comme dans ton exemple.

    Merci encore pour tes réponses. Bonne journée (essayer de pas killer trop de kat quand même, hi)

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

Discussions similaires

  1. [SP-2007] pertes des parametres lors d'une creation de site avec modele
    Par padej450 dans le forum SharePoint
    Réponses: 1
    Dernier message: 04/06/2009, 14h49
  2. Réponses: 11
    Dernier message: 24/04/2009, 23h00
  3. Réponses: 4
    Dernier message: 10/11/2008, 17h17
  4. [DOM] InnerHTML & formulaire, perte des informations
    Par bambou dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 20/07/2007, 16h35
  5. [MySQL] Perte d'information lors d'une requête de visualisation
    Par niccco dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 21/10/2005, 13h46

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