Pour l'instant, avec Entity Framework 1, vous ne recevez pas le chargement automatique retardé, par exemple Si vous souhaitez traverser d'une entité à la suivante, vous devez soit faire un .Include("OtherEntity")
sur votre sélection pour inclure ces entités dans la requête, ou vous devez appeler explicitement .Load("OtherEntity")
sur votre EntityContext pour charger cette entité.
Il s'agissait d'une décision de conception de l'équipe EF de ne pas prendre en charge le chargement différé automagique, car ils la jugeaient trop dangereuse; ils voulaient que l'utilisateur comprenne clairement qu'il comprenne/charge un second ensemble d'entités.
En raison de la forte demande populaire, le prochain EF v4 (qui sortira avec .NET 4.0 vers la fin de 2009) prendra en charge le chargement différé automatique - si vous souhaitez l'utiliser. Vous devez activer explicitement car il est désactivé par défaut:
context.ContextOptions.DeferredLoadingEnabled = true;
Voir quelques articles sur cette nouvelle fonctionnalité:
+1 - Oui, Entity Framework ne charge pas automatiquement les ensembles d'objets référencés - vous devez soit les charger explicitement avec .Load(), soit les inclure dans le résultat de la requête avec cette méthode .Include. –
Le code ci-dessus ne fonctionnera pas. Include renvoie une nouvelle ObjectQuery, que vous ignorez (permettant de la collecter) et utilisez la ObjectQuery non incluse. Inclure et Où doit être sur * la même ligne *. –
@Craig Stunz - merci, mis à jour la réponse –