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 :

Non récupération de dépendance par Foreigh Key


Sujet :

Entity Framework

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 73
    Points : 59
    Points
    59
    Par défaut Non récupération de dépendance par Foreigh Key
    Bonsoir à tous,

    Je m'exerce sur une petite appli web (gestion de bibliothèque)
    et je n' arrive pas à récupérer une liste présente dans la classe "Auteur"

    je m'explique,

    Voici les 2 classes concernées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class Auteur
        {
            public int Id { get; set; }
            [Required]
            public string Nom { get; set; }
            public List Livres { get; set; }
        }
        public class Livre
        {
            public int Id { get; set; }
            public string Titre { get; set; }
            public DateTime DateParution { get; set; }
        }
    je remplis un jeu de test avec cette méthode :

    Code : 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
     
            public int CreerAuteur(string nom)
            {
                Auteur a = new Auteur() { Nom = nom };
                bdd.Auteurs.Add(a);
                bdd.SaveChanges();
     
                return a.Id;
            }
     
            public int CreerLivre(string titre, DateTime dateParution, Auteur a)
            {
                Livre l = new Livre() { Titre = titre, DateParution = dateParution};
                if (a.Livres == null)
                {
                    a.Livres = new List<Livre>();
                }
                a.Livres.Add(l);
                bdd.SaveChanges();
     
                return l.Id;
            }
     
            private void RemplirTableLivres()
            {
                for (int i = 0; i &lt; 10; i++)
                {
                    int idAuteur = CreerAuteur("dudul" + i );
                    int idLivre = CreerLivre("titre" + i, bdd.Auteurs.First(a =&gt; a.Id == idAuteur) );
                }
            }
    et enfin je récupère mes données comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            public Dictionary<Auteur, Livre> ObtientTousLesLivresAvecAuteur()
            {
                Dictionary<Auteur, Livre> dic = new Dictionary<Auteur, Livre>();
     
                foreach (Auteur a in ObtientTousLesAuteurs())
                {
                    foreach (Livre l in a.Livres.ToList())
                    {
                        dic.Add(a, l);
                    }
                }
                return dic;
    Quand je lance l'application en mode débogueur, tout fonctionne bien la première fois car il crée les données et les persiste, donc il reste le bon jeu en local.
    donc
    a.Livres.ToList()
    fonctionne bien.

    mais quand je relance l'application pour la 2é fois, je me retrouve avec un
    a.Livres.ToList()
    null pour chaque objet Auteur contenu dans la liste renvoyée par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObtientTousLesAuteurs()
    alors que chaque auteur a écrit au moins un livre.

    J'ai vérifié coté SQL Server, l'id de l'auteur a bien été enregistré dans la table livre dans tous les enregistrements ...



    C'est la première fois que je rencontre ce problème, quelqu'un aurait une idée de la cause svp?



    Merci d'avance

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 73
    Points : 59
    Points
    59
    Par défaut
    Après Beaucoup de recherche et d'analyse de EF6 pour comprendre son fonctionnement, il suffit juste d' identifier la propriété comme "virtual" pour activer le lazy loading...

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

Discussions similaires

  1. Récupération de variable par GET et POST
    Par Sophy75 dans le forum Langage
    Réponses: 2
    Dernier message: 30/03/2006, 14h35
  2. [DOM] récupération de XML par PHP
    Par shingara dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 13/02/2006, 20h56
  3. [nio] Transfert non bloquants d'objets par SocketChannel
    Par Pill_S dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 30/11/2005, 11h19
  4. Récupération de fichiers par Access 2003
    Par JEAN MICHEL BOYER dans le forum Access
    Réponses: 3
    Dernier message: 02/09/2005, 18h18
  5. [Makefile] [Avancé]Récupération de dépendances
    Par Ruok dans le forum Systèmes de compilation
    Réponses: 4
    Dernier message: 06/02/2004, 12h52

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