I knew that Intellitrace existed, but not until I saw Nikhil Kotahari’s tweet from PDC09
“Cool VS demo – intellitrace – see your db queries, and track it back to your LINQ code #pdc09”
did I think to look at what IntelliTrace reports with respect to Entity Framework database interaction.
I fired up a sample that executed a query and then demanded some lazy loading to take place.
IntelliTrace picked up the explicit query execution but not the queries executed by lazy loading. They must be too deep in the pipeline.
In the screenshot below, tracing is displayed from the top to the bottom. I can see the step just before the query is executed , the actual command that was sent to the database and then a number of steps after that.
By the time the 8 steps were hit after the first query, my code had performed two hits to the database for lazy loading. So unfortunately, IntelliTrace is not picking them up.
I checked what happens with an explicit load (e.g., myContact.Addresses.Load()) and I can see the query in IntelliTrace. The first query (highlighted) is the explicit query, the second one, expanded, is the result of the call to Load.
I ran another bit of code that did an update via SaveChanges, and IntelliTrace did pick up the database call.
Of course, now that I have EFProf, I can see each and every call to the db, including Lazy loading calls, plus I get extra bells & whistles.
Sign up for my newsletter so you don't miss my conference & Pluralsight course announcements!