Back to List

Entity Framework 6.0 - Intercepting SQL produced by EF

Dan Lorenz Dan Lorenz  |  
Dec 02, 2013
 

Entity Framework 6.0 was recently released.  One of the new features added is called Interception.  You can now add “hooks” into each Context to catch events to log or even change values.  Setting up these Interceptors is very simple.

First, you need to create the Inteceptor class.  There are two interfaces that you can use: IDbCommandTreeInterceptor and IDbCommandInterceptor.  IDbCommandTreeInterceptor allows you to intercept the tree model that was created.  Currently, you can only modify the SELECT queries.  If EF creates a query that does not perform well, you can use this interceptor to modify the tree.  However, this will get cached, so the event will only fire the first time.  IDbCommandInterceptor allows you to manipulate the DbCommand object before and after Entity Framework makes the call to the database.  You have full access to everything on that command, including CommandText and Parameters.  You can log the SQL and the parameters.  You can modify the CommandText and/or the Parameters however you want.  Need to add SQL Server specific calls in the SQL being sent?  No problem!

We will use IDbCommandInterceptor as an example since it will most likely be the most used.  To create one, just create a new class and have it inherit from IDbCommandInterceptor.  There are six methods you must implement.  Here is what a basic skeleton would look like:

If you add code to the Executing calls, you can manipulate the SQL before it is being sent to the database.  If you add code to the Executed calls, you can manipulate the results that were returned by the database.

Finally, you need to create a static constructor for your context if you haven’t already.  Then you add one line of code that references the Inteceptor class you created.  From the previous example, the code would look like this:

That’s it!  Now whenever Entity Framework is about to make a call to the database, the methods in MyInteceptor will fire.  You can even put break points and see all the data being passed through.

If you need to pull out the current Context for some reason, you can do it via this code:

Entity Framework

 

Love our Blogs?

Sign up to get notified of new Skyline posts.

 


Related Content


Blog Article
Developing on a Raspberry Pi using Gulpjs
Eric DitterEric Ditter  |  
Jan 15, 2019
Developing on one machine and running on another is a tedious process, but sometimes you need to when a library has different features for ARM vs x64 (and then there are always the Windows vs Linux issues). This was the issue I had when I was working on a Raspberry Pi project using Python...
Blog Article
CQS, SimpleInjector, and the Power of Decorators
Dan LorenzDan Lorenz  |  
Jan 08, 2019
Over the years of developing with n-tier style, I was wondering if there was anything else out there. The biggest problem with n-tier for me is that the interfaces and classes tend to get super large. When that happens, you start breaking SOLID principals and unit testing becomes much more...
Blog Article
Async, Await, and ConfigureAwait – Oh My!
Dan LorenzDan Lorenz  |  
Dec 11, 2018
In .NET Framework 4.5, async/await keywords were added to the language to make async programming easier to work with. In order to maximize device resources and not block UI, you should really try to use asynchronous programming wherever you can. While async/await has made this much easier than...
Blog Article
How to Add Electronic and Digital Signatures to a Universal Application (UWP) with iText
Paul MadaryPaul Madary  |  
Aug 14, 2018
When paying for gas at the pump, checking out at Walmart, or electronically signing a contract to purchase real estate, have you ever thought about what technically goes into that electronic signature?  If not, then this is your lucky day! I recently had to implement this functionality in a...
Blog Article
Updated Mile of Music App Provides an Even Better User Experience
John PtacekJohn Ptacek  |  
Jul 26, 2018
As we get to the end of July at Skyline Technologies, our organization starts to get excited. We know that the Mile of Music festival is just around the corner. With over 70,000 people coming to Appleton, Wisconsin, for four days of original music, it is quite an adventure. Given one of the main...