Précédent   Forum du club des développeurs et IT Pro > Dotnet > Accès aux données > Entity Framework
Entity Framework Forum d'entraide sur le développement avec le modèle d'accès aux données Entity Framework de Microsoft.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 07/09/2012, 12h01   #1
Joffrey Kern
Membre à l'essai
 
Joffrey KERN
Inscription : octobre 2010
Messages : 37
Détails du profil
Informations personnelles :
Nom : Joffrey KERN

Informations forums :
Inscription : octobre 2010
Messages : 37
Points : 23
Points : 23
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é ?
Joffrey Kern est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2012, 12h32   #2
h2s84
Modérateur
 
Avatar de h2s84
 
Homme Holty Samba SOW
Développeur .NET
Inscription : mars 2007
Messages : 2 748
Détails du profil
Informations personnelles :
Nom : Homme Holty Samba SOW
Âge : 28
Localisation : Sénégal

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

Informations forums :
Inscription : mars 2007
Messages : 2 748
Points : 5 196
Points : 5 196
Envoyer un message via MSN à h2s84 Envoyer un message via Skype™ à h2s84
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 FAQs 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
h2s84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2012, 13h52   #3
Joffrey Kern
Membre à l'essai
 
Joffrey KERN
Inscription : octobre 2010
Messages : 37
Détails du profil
Informations personnelles :
Nom : Joffrey KERN

Informations forums :
Inscription : octobre 2010
Messages : 37
Points : 23
Points : 23
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…
Joffrey Kern est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2012, 14h03   #4
h2s84
Modérateur
 
Avatar de h2s84
 
Homme Holty Samba SOW
Développeur .NET
Inscription : mars 2007
Messages : 2 748
Détails du profil
Informations personnelles :
Nom : Homme Holty Samba SOW
Âge : 28
Localisation : Sénégal

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

Informations forums :
Inscription : mars 2007
Messages : 2 748
Points : 5 196
Points : 5 196
Envoyer un message via MSN à h2s84 Envoyer un message via Skype™ à h2s84
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 FAQs 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
h2s84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2012, 14h38   #5
Joffrey Kern
Membre à l'essai
 
Joffrey KERN
Inscription : octobre 2010
Messages : 37
Détails du profil
Informations personnelles :
Nom : Joffrey KERN

Informations forums :
Inscription : octobre 2010
Messages : 37
Points : 23
Points : 23
Pourtant quand j'utilise les Includes, les collections et objets sont chargés...
Joffrey Kern est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2012, 15h45   #6
h2s84
Modérateur
 
Avatar de h2s84
 
Homme Holty Samba SOW
Développeur .NET
Inscription : mars 2007
Messages : 2 748
Détails du profil
Informations personnelles :
Nom : Homme Holty Samba SOW
Âge : 28
Localisation : Sénégal

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

Informations forums :
Inscription : mars 2007
Messages : 2 748
Points : 5 196
Points : 5 196
Envoyer un message via MSN à h2s84 Envoyer un message via Skype™ à h2s84
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 FAQs 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
h2s84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h26.


 
 
 
 
Partenaires

Hébergement Web