Entity Framework Core IQueryable에서 생성된 SQL을 보는 방법
질문:
Entity 내 Framework Core, IQueryable 개체에 의해 생성된 SQL 코드에 어떻게 액세스합니까? 이전 버전에서 사용할 수 있었던 ToTraceString() 메서드는 EF Core에 없습니다.
답변:
EF Core 5/6 / Net 5/ 6
.NET 5 및 6이 포함된 EF Core 5 및 6의 경우, ToQueryString() 메서드를 사용할 수 있습니다.
var query = _context.Widgets.Where(w => w.IsReal && w.Id == 42); var sql = query.ToQueryString();
이전 버전의 .NET Core의 경우 확장 메서드를 사용할 수 있습니다.
Core 2.1.2
public static string ToSql<TEntity>(this IQueryable<TEntity> query) { // Reflection and casting voodoo to get EF internal classes var sql = ...; return sql; }
EF 코어 3.0
public static string ToSql<TEntity>(this IQueryable<TEntity> query) { using (var enumerator = query.Provider.Execute<IEnumerable<TEntity>>(query.Expression).GetEnumerator()) { // More reflection and casting voodoo var sql = ...; return sql; } }
EF Core 3.1
public static string ToSql<TEntity>(this IQueryable<TEntity> query) where TEntity : class { using (var enumerator = query.Provider.Execute<IEnumerable<TEntity>>(query.Expression).GetEnumerator()) { // Even more reflection and casting voodoo var sql = ...; return sql; } }
참고:
EF Core 이전 버전의 경우 5에서는 생성된 SQL을 검색하려면 리플렉션이 필요합니다. 쿼리 가능합니다.
위 내용은 Entity Framework Core IQueryable에서 생성된 SQL을 어떻게 볼 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!