Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you show underlying SQL query in EF Core?

At 3:15 from the end of this ".NET Core 2.0 Released!" video, Diego Vega shows a demo of new features in Entity Framework Core 2.0. As part of that, a dump of the underlying SQL is shown in the console app.

enter image description here

I have seen many answers on Stack Overflow suggesting that people use an SQL profiler to view the underlying queries. But now I'm curious: how can you do what Diego Vega did, and get the query to show right there in the application?

Update for .NET 6: EF logging is enabled by default in development. See this GitHub issue

Update: Diego added "Microsoft.EntityFrameworkCore.Database.Command": "Information" to appsettings.Development.json. See How do you show underlying SQL query in EF Core? for more details.

like image 812
Gigi Avatar asked Aug 26 '17 08:08

Gigi


People also ask

How do I see SQL query generated by Entity Framework Core?

Once the breakpoint is hit hover over query to expand then click on > Debug View > The dropdown beside the magnifying glass> Text Visualizer. There you have it, the SQL that will be sent to the database. Text Visualizer option showing the query generated by EF Core 5.

How can I see EF core generated SQL in Visual Studio?

Visual Studio Output You can set the logging level for Microsoft to “Information”. Then you can view the SQL in the output log when running in debug mode from Visual Studio. The SQL will then be visible in the Output panel.


1 Answers

Hi you can do something like following to display Entity Framework Core generated sql code in output window. In your DbContext class:

public static readonly Microsoft.Extensions.Logging.LoggerFactory _myLoggerFactory =      new LoggerFactory(new[] {          new Microsoft.Extensions.Logging.Debug.DebugLoggerProvider()      });  protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {     optionsBuilder.UseLoggerFactory(_myLoggerFactory); } 

The debug logger writes messages in the debug output window only when a debugger is attached.

You will have to do following:

  • using Microsoft.Extensions.Logging;
  • Install nuget package: Microsoft.Extensions.Logging.Debug
like image 87
Mohammad Avatar answered Sep 24 '22 19:09

Mohammad