Entity Framework Core IQueryable에서 SQL 코드 추출
Entity Framework Core에서 IQueryable 쿼리에 의해 생성된 SQL 코드를 얻는 것은 디버깅에 매우 중요합니다. 및 성능 분석. 그러나 이전 버전의 Entity Framework와 달리 ToTraceString은 EF Core에서 더 이상 사용할 수 없습니다.
EF Core 5/6
최신 버전의 EF Core(5.0 및 위) ToQueryString()을 사용하여 SQL 코드를 검색할 수 있습니다. 방법:
var query = _context.Widgets.Where(w => w.IsReal && w.Id == 42); var sql = query.ToQueryString();
EF Core 2.1.2 이상
이전 버전의 EF Core(2.1.2 이하)의 경우 다음 코드를 사용할 수 있습니다. SQL 코드를 얻으려면:
public static string ToSql<TEntity>(this IQueryable<TEntity> query) { // ... (code omitted for brevity) ... }
이 코드에는 EF의 내부 필드에 액세스하려면 확장 메서드 정의가 필요합니다. Core.
EF Core 3.0
EF Core 3.0에서는 다음 방법을 사용할 수 있습니다.
public static string ToSql<TEntity>(this IQueryable<TEntity> query) { // ... (code omitted for brevity) ... }
이 방법에는 확장도 필요합니다. 내부 필드에 액세스하기 위한 메서드 정의.
EF Core 3.1 및 위
EF Core 3.1부터 다음 방법을 사용할 수 있습니다.
public static string ToSql<TEntity>(this IQueryable<TEntity> query) where TEntity : class { // ... (code omitted for brevity) ... }
이 방법은 리플렉션을 사용하여 내부 필드에 액세스하고 IQueryable 쿼리에서 SQL 코드를 제공합니다.
EF Core 팀은 향후 릴리스에서 SQL 코드를 얻을 수 있는 공식적인 방법도 도입할 계획입니다.
위 내용은 Entity Framework Core IQueryable에서 SQL 코드를 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!