IList (IList<T>) crée immédiatement des données persistantes en mémoire, qui n’implémentent pas « l’exécution différée », et si l’entité chargée possède des entités associées, celle-ci ne sera pas chargée (ni immédiatement ni paresseuse).
IQeurable <T>ne crée pas immédiatement de données persistantes en mémoire, mais ne charge les données en mémoire que si elles sont parcourues (par exemple via forreach), converties en liste, etc., et peuvent réaliser une « exécution différée », si l’entité actuellement chargée a des associations, cette entité associée peut être chargée par l’accès suivant.
Regardez le code suivant :
//IList的情况 IList users = res. ToList() ; Les utilisateurs ont été chargés en mémoire, mais l’entité associée (UserInfos) à chaque utilisateur ne l’a pas été, est chargé, donc la ligne de code suivante ne passe pas sans problème VAR SS = Utilisateurs. Où(p => p.UserInfos.ID != 3) ; L’erreur est signalée ici car l’entité UserInfos de P ne peut pas être chargée
Situation d’IQuerable Utilisateurs IQueryables = res. AsQueryable() ; Les utilisateurs ne sont pas chargés immédiatement, et l’entité associée peut être obtenue par « chargement paresseux » Je l’ai VAR SS = Utilisateurs. Où(p => p.UserInfos.ID != 3) ; Le SS correspondant a été obtenu ici avec succès |