get generated sql from a compiled linq query

3.3k Views Asked by At

Is it possible to get the generated SQL from a compiled linq query?

3

There are 3 best solutions below

2
On BEST ANSWER

You can:

  1. Use the log property of the context to redirect the generated query to the output window of Visual Studio. link
  2. Or use the LINQ to SQL Debug Visualizer. link
0
On

Use LinqPad :

Or alternatively get use sql server profiler to watch the query. I know you used to be able to however over the query variable in debug and it would show you the query it is going to execute but I am not entirely sure if that still works (Definitely not on client side apps)

0
On

Thanks jfs, but the link in your option #1 is not good anymore. It is not showing any relevant article. Chris B's link to the MSDN article helped me.

Here is my solution since mine is not a Console application:

TextWriter tw = new StringWriter();
db.Log = tw;
IQueryable<Customer> custQuery =
    from cust in db.Customers
    where cust.City == "London"
    select cust;

string output = tw.ToString();   
// output variable has the generate SQL now