Debuggen von Entity Framework-SQL-Anweisungen

8

Ich habe ein seltsames Muster der Antwortzeit, wenn ich das Entity Framework für SQL-Kommunikation verwende.

Dies ist von meinem Web-Host:

Dies ist von meinem lokalen Server:

Es ist die Zunahme der Reaktionszeit, um die ich mir Sorgen mache. Ich habe das Problem auf eine einzige Codezeile reduziert Nop.Data & gt; EfRepository.cs & gt; public void Einfügen (T-Objekt) & gt; _entities.Add (Entität); Ja, ich weiß das sehr spezifisch für den NopCommerce, aber der Punkt ist wirklich, dass ich sie um Hilfe suche, wie man das debuggt.

Gibt es einige Ereignisse, die ich abfangen kann, die anzeigen, dass das SQL ausgeführt wird? Oder welche anderen Dinge kann ich tun, um mehr darüber herauszufinden, was tatsächlich im Entity Framework in diesem obigen Befehl passiert.

    
Anders 26.10.2011, 11:11
quelle

2 Antworten

21

Beim Debuggen von EF-Abfragen ist es am einfachsten, die Abfrage in ObjectQuery zu konvertieren und ToTraceString zu verwenden:

%Vor%

Dies zeigt die zugrunde liegende SQL für die Abfrage an und Sie können die Abfragen manuell ausführen, um zu debuggen, warum sie langsam sind. Hier ist der MSDN-Link:

Ссылка

Wenn Sie versuchen, die SQL zu erhalten, die beim Aufruf von SaveChanges () in Ihrem Kontext ausgeführt wird, ist das nicht so einfach. Sie können sich EFTracingProvider ansehen:

Ссылка

Wenn Sie SQL Server verwenden, können Sie direkt zu SQL Profiler wechseln und die T-SQL-Anweisungen erfassen (dies ist mein bevorzugter Ansatz).

    
JohnD 26.10.2011 11:22
quelle
8
___ tag123performance ___ Für Fragen zur Messung oder Verbesserung der Code- und Anwendungseffizienz. ___ tag123entityframework ___ Bei Fragen zum ADO.NET Entity Framework die Object-Relational-Mapping (ORM) -Tools für das .NET Framework. Fügen Sie gegebenenfalls auch ein versionsspezifisches Tag hinzu. ___ tag123nopcommerce ___ Open-Source-E-Commerce-Einkaufswagen Lösung auf der Grundlage von ASP.NET MVC und Entity Framework. Bemerkenswerte Unterscheidungsmerkmale sind Multi-Store- und Multi-Vendor-Funktionen. ___ answer7901917 ___

Beim Debuggen von EF-Abfragen ist es am einfachsten, die Abfrage in ObjectQuery zu konvertieren und ToTraceString zu verwenden:

%Vor%

Dies zeigt die zugrunde liegende SQL für die Abfrage an und Sie können die Abfragen manuell ausführen, um zu debuggen, warum sie langsam sind. Hier ist der MSDN-Link:

Ссылка

Wenn Sie versuchen, die SQL zu erhalten, die beim Aufruf von SaveChanges () in Ihrem Kontext ausgeführt wird, ist das nicht so einfach. Sie können sich EFTracingProvider ansehen:

Ссылка

Wenn Sie SQL Server verwenden, können Sie direkt zu SQL Profiler wechseln und die T-SQL-Anweisungen erfassen (dies ist mein bevorzugter Ansatz).

    
___ qstntxt ___

Ich habe ein seltsames Muster der Antwortzeit, wenn ich das Entity Framework für SQL-Kommunikation verwende.

Dies ist von meinem Web-Host:

Dies ist von meinem lokalen Server:

Es ist die Zunahme der Reaktionszeit, um die ich mir Sorgen mache. Ich habe das Problem auf eine einzige Codezeile reduziert Nop.Data & gt; EfRepository.cs & gt; public void Einfügen (T-Objekt) & gt; _entities.Add (Entität); Ja, ich weiß das sehr spezifisch für den NopCommerce, aber der Punkt ist wirklich, dass ich sie um Hilfe suche, wie man das debuggt.

Gibt es einige Ereignisse, die ich abfangen kann, die anzeigen, dass das SQL ausgeführt wird? Oder welche anderen Dinge kann ich tun, um mehr darüber herauszufinden, was tatsächlich im Entity Framework in diesem obigen Befehl passiert.

    
___ qstnhdr ___ Debuggen von Entity Framework-SQL-Anweisungen ___
Richie 24.04.2015 14:02
quelle