2010-12-02 8 views
3

Ich habe Leistungsprobleme mit Entity Framework, wenn die erste Abfrage für die Anwendung ausgeführt wird, dauert es etwa 20 Sekunden Ich überprüfte die tatsächliche Ausführungszeit der Abfrage auf SQL Server mit SQL Server Profiler es dauert einige Millisekunden erste Abfrage andere arbeiten ok.Entity Framework Performance Problem

Die Abfrage ist eine sehr einfache Auswahl aus einer Tabelle mit nur einer Zeile eingefügt.DB besteht aus etwa 200 Tabellen, aber nichts Besonderes darin keine Indizes, Ansichten ... Ich sah einige andere Leute auch ähnliche Probleme mit dem ersten Frage, aber ich konnte keine Lösung finden. Irgendeine Idee darüber, was wirklich vor sich geht?

dieses Gut der Abfrage

 DBEntities en = new DBEntities(); 

     var person= (from p in en.People 
          select p).First(); 
     this.txt1.Text = person.name; 
+0

Sind Sie sicher, dass die Abfrage 20 Sekunden dauert? Machst du irgendetwas mit den Abfrageergebnissen? Könnte helfen, wenn wir die Abfrage sehen können. –

Antwort

1

Obwohl die SQL-Abfrage Millisekunden dauert, die Schaffung des SQL innerhalb EF vielleicht einige Zeit auf dem ersten Ausführung nehmen. Vor allem, wenn es sich um eine komplexe Abfrage/ein komplexes Modell handelt. Sehen Sie sich diesen Artikel an, in dem erläutert wird, wie Sie eine Vorgenerierung durchführen können, um die Leistung zu verbessern. Pre-Generate Views

0

Wenn die Abfrage in der Datenbank nur Millisekunden (weniger als 300) dauert, liegt das Problem in der Anwendung. Sie müssen Ihren Code instrumentieren und Meldungen protokollieren, die Sie darüber informieren, wenn Ereignisse in der Transaktion auftreten. Sie sollten sich vor und nach dem Aufruf der Datenbank anmelden, um Netzwerklatenzen auszuschließen. Es ist wahrscheinlich, dass nach der ersten Abfrage die Ergebnisse zwischengespeichert werden, so dass danach alles schnell geht. Die Frage ist, ob das Einrichten des Caches oder das Übertragen der Nutzdaten dauernd dauert.

0

Zwei weitere Optionen zum Auffinden, wo der Code die Leistung beeinträchtigt: SQL Profiler und die ausgezeichnete EFProf.