Entity Framework 6 で SQL Trace が超絶楽になってた

全然気づかなかったんですが、いつの間にか Entity Framework 6 がリリースされてました。変更点は CodePlex Archive にまとまっていますが、個人的に非常に嬉しかったのが SQL Trace が標準でサポートされたこと。

今までは EFTracingProvider あたりを導入してごにょごにょやる必要がありました。いつからか nuget で使えるようになって導入は楽になったとはいえ、なんで SQL をトレースするだけで別途ライブラリを入れなきゃならないのかというのが引っかかるところでした。これぐらい標準でできてほしかったなー・・と。

それが EF6 ではこれだけでおk。

using (var context = new HogeContext())
{
    context.Database.Log = Console.Write;
    // なんか処理
}

LogAction 型なので、引数に string を取る戻り値なしのメソッドであればロガーでもなんでも指定可能です。これでこの context から実行される SQL を全てトレースできるようになります。パラメーターがある場合はそれらもちゃんと出してくれます。いやーこれは楽ですね!