Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Lost parameter value during SQL trace in EF Core

I have implemented an approach for tracing SQL queries from EF Core according to this article: https://docs.microsoft.com/en-us/ef/core/miscellaneous/logging. And have problems with tracing query parameters. When I receive Log events in all values of DbParameterLogData I see only the question mark instead of the actual values which I passed to the query.

enter image description here

I am using VS 2015.

like image 973
asat Avatar asked May 26 '17 13:05

asat


People also ask

How do I view SQL in EF core?

For use this, you're going to want to set a breakpoint below your EF Core query. Breakpoint hit after the query. 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.

Does EF core create database if not exist?

Entity Framework automatically creates database when it doesn't exist.


1 Answers

This is the default behavior of EF Core (filling up the DbParameterLogData.Value property with "?").

In order to get the real parameter values, you need to enable sensitive data logging by using DbContextOptionsBuilder.EnableSensitiveDataLogging method:

Enables application data to be included in exception messages, logging, etc. This can include the values assigned to properties of your entity instances, parameter values for commands being sent to the database, and other such data. You should only enable this flag if you have the appropriate security measures in place based on the sensitivity of this data.

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {     optionsBuilder.EnableSensitiveDataLogging();     // ... } 
like image 192
Ivan Stoev Avatar answered Sep 22 '22 11:09

Ivan Stoev