2007-07-15

LINQ Debugging - GetQueryText, GetChangeText

Mit Hilfe der Log Eigenschaft von DataContext Klassen können Sie den generierten SQL Ausdrücke ausgeben. Dieser Möglichkeit kann beim Debugging Prozess behilflich sein, wenn Sie wissen möchten, wie der generierte SQL Ausdruck aussieht.

string connStr = @"Data Source=.;
Initial Catalog=AdventureWorks;
Integrated Security=True";
DataContext db = new DataContext(connStr);

db.Log = Console.Out;

Die GetQueryText Methode der DataContext Klasse kann auch für die Ermittlung der SQL Abfragen verwendet werden. Dieser Methode liefert SQL Ausdrücke für die lesenden Zugriffe auf die Datenbank.

var query = from p in product select p;
Console.WriteLine(db.GetQueryText(query));

Für die schreibenden Zugriffe kann die GetChangeText Methode verwendet werden. Dieser Methode liefert die INSERT, UPDATE und DELETE SQL Ausdrücke, die vom DataContext Objekt im Hintergrund erstellt werden.

Console.WriteLine(db.GetChangeText());

Mit Microsoft SQL Server gelieferte SQL Server Profiler kann natürlich auch für das Überwachen der generierten SQL Ausdrücke verwendet werden. An dieser Stelle empfehle ich sogar, dass Sie während der Entwicklung von Ihrer Applikation öfters mit SQL Server Profiler arbeiten. So können Sie an die Datenbank übergegebene SQL Ausdrücke überwachen und die von Profiler erstellten Auswertungen für die Optimierung Ihrer Datenbank verwenden.

No comments: