I've using Entity Framework CTP5 in "code only" mode. I'm running a LINQ query on a object that was return from the database, as the query is running really slowly. Is there any way in which I can get the SQL statement that is being generated from the query?
Topic currentTopic = (from x in Repository.Topics let isCurrent = (x.StoppedAt <= x.StartedAt || (x.StartedAt >= currentTopicsStartedAtOrAfter)) where x.Meeting.Manager.User.Id == user.Id && isCurrent orderby x.StartedAt descending select x).FirstOrDefault();
The "Repository" property is a descendent of DbContext.
It's a little complicated, as EF can't use my helper methods on the objects, so I'm specifying the logic directly in the query.
So, is there any way I can dump the SQL that will be produced by that LINQ query (e.g. to my log4net repository)?
I'd either use SQL Trace to grab the query running on the server directly, or use the Event Tracing for Windows (SQL Profiling) feature out of ANTS Performance Profiler.
Your other choices are:
In common EF you can also use
ToTraceString as @Andy suggested but
DbQuery in CodeFirst doesn't have this method (or I didn't find it).
DbQuery doesn't have
ToTraceString because it is directly implemented as