+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Nouveau Membre du Club
    Inscrit en
    octobre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : octobre 2010
    Messages : 39
    Points : 33
    Points
    33

    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 :
    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 :
    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 :
    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
    Nouveau Membre du Club
    Inscrit en
    octobre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : octobre 2010
    Messages : 39
    Points : 33
    Points
    33

    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
    Nouveau Membre du Club
    Inscrit en
    octobre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : octobre 2010
    Messages : 39
    Points : 33
    Points
    33

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •