Je suis en train de mettre à jour une application de EF1 à EF4.1. J'ai créé un DbContext et un ensemble de POCOs en utilisant les modèles "ADO.NET DbContext Generator".
Lorsque j'interroge le DbContext généré, la partie base de données de la requête prend 4ms pour s'exécuter (validé avec EF Profiler). Ensuite, le contexte prend environ 40 secondes (en mots : QUATRE !) pour faire ce qu'il fait avant de retourner le résultat à l'application.
EF1 traite la même requête en moins de 2 secondes.
En désactivant AutoDetectChanges, LazyLoading et ProxyGeneration, je gagne 2 à 3 secondes.
Lorsque j'utilise la méthode d'extension AsNoTracking(), je suis en mesure de réduire le temps d'exécution total à environ 3 secondes.
Cela indique que ChangeTracking est le coupable.
Mais ChangeTracking est ce dont j'ai besoin. Je dois être capable de faire persister tous les changements sans avoir à trier les entités modifiées.
Avez-vous une idée de la façon dont je pourrais résoudre ce problème de performance ?