Check LINQ query against SQL Server database

2020-05-29 05:44发布

Is there any way to in .NET to see what LINQ query against database we are firing? For eg. I am wring a query in LINQ and I want to see that what SQL query is firing to communicate with database.

Is there any Visual Studio window or any other way?

5条回答
疯言疯语
2楼-- · 2020-05-29 05:59

If you have a DbContext on which you firing your LINQ queries you can simply set the DbContext.Database.Log property to something like this:

yourContext.Database.Log = (msg => System.Diagnostics.Debug.Write(msg, "SQL"));

After this, every SQL query shows up in the Debug console from your Visual Studio with the category SQL.

查看更多
家丑人穷心不美
4楼-- · 2020-05-29 06:10

Are you looking for something like this

var context = new MyContext();
context.Database.Log = s => Debug.WriteLine(s);

Then whenever a query is executed, you'll see an output like :

var customers = context.Customers.ToList();

Opened connection at 30-3-2015 13:48:03 +02:00

SELECT [Extent1].[Guid] AS [Guid],
[Extent1].[FirstName] AS [FirstName],
[Extent1].[LastName] AS [LastName],
[Extent1].[Email] AS [Email],
[Extent1].[Created] AS [Created]
FROM [dbo].[Customer] AS [Extent1]

-- Executing at 30-3-2015 13:48:03 +02:00

-- Completed in 0 ms with result: SqlDataReader

Closed connection at 30-3-2015 13:48:03 +02:00

查看更多
萌系小妹纸
5楼-- · 2020-05-29 06:20

You can use the Log property of DataContext object. Also, it depends on the type of application you are using.

For Web Application:-

db.Log = Response.Output;

For Console Application:-

db.Log = Console.Out;

Apart from this you can also use the GetCommand method of DataContext class. Sql Server Profiler is again an obvious option.

查看更多
看我几分像从前
6楼-- · 2020-05-29 06:22

You can use SQL Profiler to see how the LINQ expression is translated into SQL statement.

查看更多
登录 后发表回答