How is it done using the ObjectQuery method?
To view the SQL that will be generated, simply call ToTraceString() . You can add it into your watch window and set a breakpoint to see what the query would be at any given point for any LINQ query. You can attach a tracer to your SQL server of choice, which will show you the final query in all its gory detail.
LINQ to SQL translates the queries you write into equivalent SQL queries and sends them to the server for processing. More specifically, your application uses the LINQ to SQL API to request query execution. The LINQ to SQL provider then transforms the query into SQL text and delegates execution to the ADO provider.
You can always attach something to the .Log property of your DataContext. That will show all the SQL commands as they are sent.
I do this in my base for data access objects and output it to the Visual Studio debug console. As the objects create their DataContext I check it see if its debug and attach a TextWritter helper class like this:
dbDataContext _dB = new dbDataContext(); _dB.CommandTimeout = 5000; #if DEBUG _dB.Log = new DebugTextWriter(); #endif
Here is the helper object for output to the debug console:
//utility class for output of TextWriter for the Visual Sudio Debug window class DebugTextWriter : System.IO.TextWriter { public override void Write(char[] buffer, int index, int count) { System.Diagnostics.Debug.Write(new String(buffer, index, count)); } public override void Write(string value) { System.Diagnostics.Debug.Write(value); } public override Encoding Encoding { get { return System.Text.Encoding.Default; } } }
Here is what I found using ObjectQuery Method. Using console for testing, you can do the following:
Create an Extension Method as below, then call it. Say Product product, then SQL prints out as product.ToTraceString.
public static class MyExtensions { public static string ToTraceString<T>(this IQueryable<T> t) { string sql = ""; ObjectQuery<T> oqt = t as ObjectQuery<T>; if (oqt != null) sql = oqt.ToTraceString(); return sql; } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With