全然気づかなかったんですが、いつの間にか Entity Framework 6 がリリースされてました。変更点は CodePlex Archive にまとまっていますが、個人的に非常に嬉しかったのが SQL Trace が標準でサポートされたこと。
今までは EFTracingProvider あたりを導入してごにょごにょやる必要がありました。いつからか nuget で使えるようになって導入は楽になったとはいえ、なんで SQL をトレースするだけで別途ライブラリを入れなきゃならないのかというのが引っかかるところでした。これぐらい標準でできてほしかったなー・・と。
それが EF6 ではこれだけでおk。
using (var context = new HogeContext()) { context.Database.Log = Console.Write; // なんか処理 }
Log
は Action
型なので、引数に string
を取る戻り値なしのメソッドであればロガーでもなんでも指定可能です。これでこの context
から実行される SQL を全てトレースできるようになります。パラメーターがある場合はそれらもちゃんと出してくれます。いやーこれは楽ですね!