Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Nouveau Membre du Club
    Profil pro Joffrey KERN
    Inscrit en
    octobre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Nom : Joffrey KERN

    Informations forums :
    Inscription : octobre 2010
    Messages : 39
    Points : 29
    Points
    29

    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
    Modérateur
    Avatar de h2s84
    Homme Profil pro Holty Samba SOW
    Développeur .NET
    Inscrit en
    mars 2007
    Messages
    3 022
    Détails du profil
    Informations personnelles :
    Nom : Homme Holty Samba SOW
    Âge : 29
    Localisation : Sénégal

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

    Informations forums :
    Inscription : mars 2007
    Messages : 3 022
    Points : 5 839
    Points
    5 839

    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
    Consultant .Net chez SoftFluent
    Découvrir notre produit CodeFluent Entities

    Adhérer à l'association Fier d'être développeur
    Les FAQ sur les technologies .Net voir ici
    Les cours et tutos sur les technologies .Net voir ici
    Les critiques sur les livres parlant des technologies .Net voir ici
    Pensez à la balise [CODE]
    Pensez au tag si votre problème est résolu

  3. #3
    Nouveau Membre du Club
    Profil pro Joffrey KERN
    Inscrit en
    octobre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Nom : Joffrey KERN

    Informations forums :
    Inscription : octobre 2010
    Messages : 39
    Points : 29
    Points
    29

    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
    Modérateur
    Avatar de h2s84
    Homme Profil pro Holty Samba SOW
    Développeur .NET
    Inscrit en
    mars 2007
    Messages
    3 022
    Détails du profil
    Informations personnelles :
    Nom : Homme Holty Samba SOW
    Âge : 29
    Localisation : Sénégal

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

    Informations forums :
    Inscription : mars 2007
    Messages : 3 022
    Points : 5 839
    Points
    5 839

    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
    Consultant .Net chez SoftFluent
    Découvrir notre produit CodeFluent Entities

    Adhérer à l'association Fier d'être développeur
    Les FAQ sur les technologies .Net voir ici
    Les cours et tutos sur les technologies .Net voir ici
    Les critiques sur les livres parlant des technologies .Net voir ici
    Pensez à la balise [CODE]
    Pensez au tag si votre problème est résolu

  5. #5
    Nouveau Membre du Club
    Profil pro Joffrey KERN
    Inscrit en
    octobre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Nom : Joffrey KERN

    Informations forums :
    Inscription : octobre 2010
    Messages : 39
    Points : 29
    Points
    29

    Par défaut

    Pourtant quand j'utilise les Includes, les collections et objets sont chargés...

  6. #6
    Modérateur
    Avatar de h2s84
    Homme Profil pro Holty Samba SOW
    Développeur .NET
    Inscrit en
    mars 2007
    Messages
    3 022
    Détails du profil
    Informations personnelles :
    Nom : Homme Holty Samba SOW
    Âge : 29
    Localisation : Sénégal

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

    Informations forums :
    Inscription : mars 2007
    Messages : 3 022
    Points : 5 839
    Points
    5 839

    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.
    Consultant .Net chez SoftFluent
    Découvrir notre produit CodeFluent Entities

    Adhérer à l'association Fier d'être développeur
    Les FAQ sur les technologies .Net voir ici
    Les cours et tutos sur les technologies .Net voir ici
    Les critiques sur les livres parlant des technologies .Net voir ici
    Pensez à la balise [CODE]
    Pensez au tag si votre problème est résolu

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
  •