|
|
게시됨 2021. 2. 19. 오후 1:36:34
|
|
|
|

개발 과정에서 ef core 프레임워크를 사용할 때, linq 또는 lambda 표현식을 사용할 때 SQL 문장을 직접 볼 수 없어 문제 해결이나 성능 최적화가 불편합니다.
이 글에서는 EF Core 5를 예로 들어 사용합니다출력 EF가 생성하는 SQL 문들을 보기 위해
먼저, 시작 파일에 "ConsoleLoggerFactory" 변수를 넣은 새로운 콘솔로거 팩토리 변수를 생성하세요. 생성된 SQL 문이 콘솔에 출력됩니다. 코드는 다음과 같습니다:
DbContext 코드를 다음과 같이 구성하여 ConfigureServices 메서드에 로그 출력을 추가하세요:
프로젝트를 시작하면 콘솔 출력이 다음과 같이 나타납니다:
info: Microsoft.EntityFrameworkCore.Database.Command[20101] 실행 중인 DbCommand (1ms) [매개변수=[], CommandType='Text', CommandTimeout='30'] [a]를 선택하세요. [Id], [a]. [장애인], [a]. [링크], [a]. [이름], [a]. [핀음], [a]. [입장], [a]. [_CreateTime], [a]. [_CreateTimeStamp], [a]. [_UpdateTime], [a]. [_UpdateTimeStamp] [지역] 아마 [a]
info: Microsoft.EntityFrameworkCore.Database.Command[20101] 실행된 DbCommand (19ms) [매개변수=[p0='?' (크기 = 4000)], CommandType='Text', CommandTimeout='30'] 핀인 = @p0 영역에서 선택 *
info: Microsoft.EntityFrameworkCore.Database.Command[20101] 실행 중인 DbCommand (1ms) [매개변수=[], CommandType='Text', CommandTimeout='30'] 선택 * 지역에서
만약 where 조건이 있는 SQL 문이 매개변수화된 변수만 볼 수 있고 전달된 특정 값은 볼 수 없다면, 다음과 같은 구성이 추가됩니다:
예외 메시지, 로그 등에 애플리케이션 데이터를 포함할 수 있도록 합니다.
여기에는 엔터티 인스턴스 속성에 할당된 값이 포함될 수 있습니다.
데이터베이스에 전송된 명령의 매개변수 값 및 기타 데이터입니다.
이 깃발은 안전 조치가 마련되어 있을 때만 활성화되어야 합니다
이 데이터의 민감도를 기준으로 합니다.
신청이 진행 중인지 참고하세요
Microsoft.EntityFrameworkCore.DbContextOptions 생성기를 호출합니다. UseInternalServiceProvider(system. IServiceProvider),
이 옵션은 해당 서비스 제공자의 모든 사용에 대해 동일한 방식으로 설정되어야 합니다.
Consider not calling Microsoft.EntityFrameworkCore.DbContextOptionsGenerator.UseInternalServiceProvider(system. IServiceProvider)
따라서 EF는 서비스 제공자를 관리하며 필요에 따라 새로운 인스턴스를 생성할 수 있습니다
전체 구성은 다음과 같습니다:
렌더링은 다음과 같습니다:
물론, 위 설정들은 DbContext의 OnConfiguring 메서드를 덮어쓰는 방법으로도 설정할 수 있습니다(권장하지 않음):
(끝)
|
이전의:Financial TipRanks 주식 분석 등급다음:EF 코어 시리즈(5)는 SQL 문이나 뷰, 저장 프로시저를 실행합니다
|