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 中国語 Web サイトの他の関連記事を参照してください。