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 :

[EF Code First] Impossible de désactiver le lazyloading


Sujet :

Entity Framework

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 39
    Points : 48
    Points
    48
    Par défaut [EF Code First] Impossible de désactiver le lazyloading
    Bonjour à tous,

    Avec EF Code First 5, je tente de désactiver le lazyloading sans success.

    Voici le scénario :
    Je dispose d'une table "Liste", qui a plusieurs relations vers N table. Ma table Liste a aussi une relation *-* vers elle-même (Une "Liste" peut avoir plusieurs "Liste" et ces "Liste" peuvent avoir plusieurs parents).

    De ce fait, l'utilisation de la méthode .Include() devient un peu laborieuse dans ce cas par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    List<Liste> lists = context. Liste.Include("Filtres")
    				.Include("Design")
    				.Include("ListesEnfant");
    Dans ce cas, la propriété ListesEnfant n’aura pas chargé la relation avec Filtres et Design, il faudrait donc faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    List<Liste> lists = context. Liste.Include("Filtres")
    				.Include("Design")
    				.Include("ListesEnfant")
    				.Include("ListesEnfant.Filtres")
    				.Include("ListesEnfant.Design");
    Vu qu’il faut faire de même pour les enfants des enfants, et ainsi de suite, je ne peux pas utiliser cette technique. J’ai donc essayé de désactiver le lazyloading avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    context.Configuration.LazyLoadingEnabled = false;
    Mais les objets de relations restent de toute évidence à null.
    Une idée pour charger directement en mémoire toutes les relations d’une entité ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Joffrey Kern Voir le message
    Mais les objets de relations restent de toute évidence à null.
    Une idée pour charger directement en mémoire toutes les relations d’une entité ?
    Si tu veux éviter de faire des Include alors soit tu fais le chargement à la demande ou soit tu charges de façon explicite les relations. Alors vu que tu viens de désactiver le lazyloading alors faut que tu fasses les chargements via le code manuellement

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 39
    Points : 48
    Points
    48
    Par défaut
    Donc quand le lazyloading est activé, les chargements devraient normalement déjà être réalisés. Mais dans mes relations, j’ai toujours la valeur null ou les collections à 0…

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Joffrey Kern Voir le message
    Donc quand le lazyloading est activé, les chargements devraient normalement déjà être réalisés. Mais dans mes relations, j’ai toujours la valeur null ou les collections à 0…
    Si le lazyloading est activé alors normalement les données doivent être chargées lorsque tu essaies d'accééder aux propriétés de navigations (relations)
    Soit il n'existe aucune ligne correspondante dans ta base de données à charger dans le cas de 0. Dans le cas de null, c'est normal quand il s'agit d'une propriété de navigation qui n'est pas une collection

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 39
    Points : 48
    Points
    48
    Par défaut
    Pourtant quand j'utilise les Includes, les collections et objets sont chargés...

  6. #6
    Invité
    Invité(e)
    Par défaut
    Peut-on voir par où tu as mis la ligne de code qui active/désactive le lazy loading STP ?

    Sinon au cas où tu ne le saurais pas pour que le lazy loading soit pris en compte il faut impérativement que les propriétés de navigation soient marquées avec le mot virtual.

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/05/2014, 17h23
  2. Réponses: 6
    Dernier message: 02/02/2011, 22h45
  3. Impossible de désactiver le paint
    Par raytaller dans le forum Windows Forms
    Réponses: 5
    Dernier message: 06/11/2008, 16h18
  4. Impossible de désactiver le pare-feu Windows
    Par belocom dans le forum Windows XP
    Réponses: 5
    Dernier message: 05/02/2007, 13h59

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