Few days back I was optimizing the performance with Entity framework and Linq queries and I was using LinqPad and looking SQL generated by the Linq or entity framework queries. After some point of time I got the same question in mind that how I can find the SQL Statement generated by Entity framework? After some struggling I have managed to found the way of finding SQL Statement so I thought it would be a great idea to write a post about same and share my knowledge about that. So in this post I will explain how to find SQL statements generated Entity framework queries. To demonstrate the idea Let’s a very simple console application with C# and then create a table called ‘Customer’ with CustomerId and CustomerName field in sql server.
Now once our table is ready it’s time to create a Entity framework model.
Now once Model is ready It’s time to write a simple query in console application where we want to get all customer name like following.
using System; using System.Runtime.CompilerServices; using System.Linq; using System.Data; namespace EntityframeworkSQL { class Program { static void Main(string[] args) { using (CustomerEntities customerEntities = new CustomerEntities()) { var customerNames = from c in customerEntities.Customers select c.CustomerName; string sql = ((System.Data.Objects.ObjectQuery)customerNames).ToTraceString(); Console.WriteLine(sql); } } } }
So here in the above code for that. here I have created a object of my customer entity with help of using and then written a simple query to get all the customer name. Now with the help of System.Data.Objects.ObjectQuery class ToTraceString method I am able to find the SQL Generated by the statement. Here I have direct cast customerNames to ObjectQuery class and find sql generated by statement via ToTraceString method. Now let’s run this console application via pressing F5 and following is a output as expected.
As you can see the SQL statement generated by entity framework. Hope you like it. Stat tuned for more.