Bonjour,
j'ai généré un modèle de base de données via l'Entity Framework, et j'ai une table Employees avec les champs classique nom, prénom, ... et une propriété de navigation "Manager" qui pointe sur la table elle-même.
Voici ma requète Linq :
En gros, je recherche tous les employés qui n'ont pas de manager et dont le nom contient le pattern que j'ai indiqué.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 List<Employee> emps = new List( from e in context.Employees where e.Manager == null && e.Name.ToLower().Contains(pattern) orderby e.Name select e);
Sur 300 enregistrements, la requète me prend plus d'une seconde, et j'ai analysé sous tous les angles, 90% du temps provient uniquement de la condition [e.Manager == null].
Je comprends qu'il faut un peu de temps pour charger avant de tester la propriété de navigation; cependant ce qui me surprend beaucoup c'est que si j'exécute la requète plusieurs fois d'affilée le temps de réponse est toujours invarient.
Mon Context est le même durant toute la session, et est réglé pour faire du Lazy Loading.
Je pensais qu'avec ce mode, le temps d'exécution allait être un peu long la première fois, puis plus rapide par la suite.
Ai-je manquer une étape dans le raisonnement ?
PS: ma BDD est un fichier SqlCE.
Partager