|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre Expert
![]() Arnaud Développeur .NET Inscription : avril 2006 Messages : 1 386 ![]() |
Hello,
on constate que certaines listes d'objets prennent 20-25 secondes à être générées via EF. Via SQL Server Profiler, on retrouve une durée de cet ordre de grandeur (par ex 21 sec), avec, à titre d'information, 1461 pages lues et 60 000 enregistrements présents dans la table pour la requête concernée. La requête exécutée est un bête select, même pas de jointure... Si on prend la requête affichée par SQL Server Profiler et qu'on l’exécute dans management studio, la requête prend 0 à 1 sec... Qu'est ce qui peut expliquer ça ? EDIT : Je refais un test avec tous les appels via c#. Les résultats (en ms, mesuré dans le code via un Stopwatch) Citation:
Citation:
|
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() |
Bizarre...tu as essayé avec NoTracking?
__________________
Microsoft MVP : Visual C# MCPD - Windows Phone Developer MCPD - Windows Developer 4 http://www.guruumeditation.net “If debugging is the process of removing bugs, then programming must be the process of putting them in.” (Edsger W. Dijkstra) |
|
00
|
|
|
#3 |
|
Membre Expert
![]() Arnaud Développeur .NET Inscription : avril 2006 Messages : 1 386 ![]() |
Code :
context.Sequence.MergeOption = System.Data.Objects.MergeOption.NoTracking; |
|
|
00
|
|
|
#4 |
![]() ![]() |
On sait que ça rame au niveau d'Entity Framework alors je te conseille de regarder tout ça en utilisant l'outil DotTrace JetBrain (une version démo est dispo et largement suffisant pour te faire ton avis). Il y a aussi EFProf que tu peux utiliser.
__________________
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
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Arnaud Développeur .NET Inscription : avril 2006 Messages : 1 386 ![]() |
EF Profiler m'affiche la requête générée et me dit que la requête sql a duré 3ms, pour une durée totale de 20s.
Le débogueur visual studio indique qu'il passe tout son temps dans le ToList sans être plus précis. Avec JetBrain, on observe qu'il passe la majorité de son temps dans des GetInternalRelatedEntity, la table présente 13 FK. |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Consultant informatique Inscription : février 2006 Messages : 731 ![]() |
Bonjour,
A mon avis il charge toute ton arborescence d'objets, c'est une peu long... Si j'étais toi, j'essayerai : Code :
context.ContextOptions.LazyLoadingEnabled = true;
__________________
Un âne se croit savant parce qu'on le charge de livres (proverbe américain) N'oubliez pas de avant de ![]() Pas de question techniques par MP, c'est contre la philosophie du forum
|
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Arnaud Développeur .NET Inscription : avril 2006 Messages : 1 386 ![]() |
Je descends de 23 à 17sec au mieux.
|
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Consultant informatique Inscription : février 2006 Messages : 731 ![]() |
__________________
Un âne se croit savant parce qu'on le charge de livres (proverbe américain) N'oubliez pas de avant de ![]() Pas de question techniques par MP, c'est contre la philosophie du forum
|
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Arnaud Développeur .NET Inscription : avril 2006 Messages : 1 386 ![]() |
Avec le mergeOptions Notracking en plus, je descends à 12sec. Mais ça reste éloigné de la seconde pour une StoreQuery. Il faut que je voie pour les relations, c'est ce qui semble ncore consommer beaucoup de temps, malgré les null
|
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Consultant informatique Inscription : février 2006 Messages : 731 ![]() |
Ce lien peut être intéressant aussi...
Mais pourquoi ne fais-tu pas : ici, j'ai utilisé sequences mais il peut très bien s'appeler autrement chez toi au lieu d'une requête?
__________________
Un âne se croit savant parce qu'on le charge de livres (proverbe américain) N'oubliez pas de avant de ![]() Pas de question techniques par MP, c'est contre la philosophie du forum
|
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Arnaud Développeur .NET Inscription : avril 2006 Messages : 1 386 ![]() |
Code :
EF : 22227,2778 //Context.Sequence.ToList() Merci pour le lien, je vais y jeter un œil. |
|
|
00
|
|
|
#12 |
|
Expert Confirmé
![]() |
Un détail:
A quoi est mappé SEQUENCE dans ton EDMX? directement à la table SEQUENCE?
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. MCTS Database Development |
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() Arnaud Développeur .NET Inscription : avril 2006 Messages : 1 386 ![]() |
Oui, mapping direct
|
|
|
00
|
|
|
#14 |
![]() ![]() |
Au vu des solutions déjà proposées et que ça ne règle toujours pas ton problème, peut-être que tu devrais penser à générer les vues pour EF. Entity Framework Power Tools te permet de générer assez facilement sans passer par la ligne de commande.
__________________
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
|
|
00
|
Copyright © 2000-2013 - www.developpez.com