Most of the beginner developers who are using LINQ to SQL as their back-end to talk with the database (i.e. to perform the database CRUD operation) don't have an idea what query gets fired to database out of LINQ query.
Lastly, I asked to log the query that fires to database out of my LINQ query. So as a solution, I found one makes use of SQL Server Profiler to check fire query. But with the profiler, I am not able to log the queries.
I found one solution is to make use of Log
property of DataContext
object. Log
property allows me to log the queries in the file. Consider the below code:
using
(System.IO.StreamWriter sw = new System.IO.StreamWriter(@"e:\tempdatacontext.log"))
{
EmployeeDataContext edb = new EmployeeDataContext();
edb.Log = sw;
var cust = from c in edb.Customers
join d in edb.Distributors on
new { CityID = c.CityId, StateID = c.StateId,
CountryID = c.CountryId, Id = c.DistributorId }
equals
new { CityID = d.CityId, StateID = d.StateId,
CountryID = d.CountryId, Id = d.DistributorId }
select c;
List<customer> custList = cust.ToList();
}
So once the code gets executed, it's time to check the temp file. As I opened up the file, I found the following query gets fired on my database:
It's fun to find the query gets fire to database and you get to know if there is any problem in the LINQ query you wrote.
CodeProject