Dev/dotnet core

Entityframwork core Parameter value 확인

catchv 2023. 4. 11. 16:33
반응형

EF Core(Entityframwork core) 쿼리를 실행하는 경우 Parameter의 값이 ?로 로그에 출력 합니다.

이유는 실제 쿼리가 parameter binding되어 실행되기 때문에 쿼리문 자체는 ?로 실행됩니다.

두번째 줄의 Parameters에 ? 와 컬럼 타입 및 CommandTimout 값만 표시 된다.

dbug: 2023-04-11 16:19:23.468 RelationalEventId.CommandExecuting[20100] (Microsoft.EntityFrameworkCore.Database.Command)
      Executing DbCommand [Parameters=[@__GetName_0='?' (Size = 4000)], CommandType='Text', CommandTimeout='30']
      SELECT [s].[StudentId], [s].[Name]
      FROM [Students] AS [s]
      WHERE [s].[Name] = @__GetName_0

 

해당 부분을 확인하기 위해서 EnableSensitiveDataLogging()  호출하면 Parameter의 값을 확인 할 수 있습니다.

        optionsBuilder.UseSqlServer(builder.ConnectionString);
        optionsBuilder.EnableSensitiveDataLogging();

        optionsBuilder.LogTo(Console.WriteLine,
            new[] { 
                Microsoft.EntityFrameworkCore.Diagnostics.RelationalEventId.CommandExecuting,
            });

 

"파라미터값"이라는 것이 변수에 바인딩되는 것을 확인 할 수 있습니다.

dbug: 2023-04-11 16:30:35.534 RelationalEventId.CommandExecuting[20100] (Microsoft.EntityFrameworkCore.Database.Command)
      Executing DbCommand [Parameters=[@__GetName_0='파라미터값' (Size = 4000)], CommandType='Text', CommandTimeout='30']
      SELECT [s].[StudentId], [s].[Name]
      FROM [Students] AS [s]
      WHERE [s].[Name] = @__GetName_0
반응형

'Dev > dotnet core' 카테고리의 다른 글

옵션 패턴(Option pattern)  (0) 2023.07.11
dotnet middleware 순서  (0) 2023.07.05
dotnet user-secrets  (0) 2023.05.24
vault v2 api  (0) 2023.04.20