.NET TIPS LINQ to SQLにより生成されるSQL文を確認するには?[3.5、C#、VB]デジタルアドバンテージ 遠藤 孝信2008/10/09 |
|
|
データベースに対してLINQ(リンク)を使用する場合、LINQのクエリはLINQプロバイダであるSQL to LINQによりSQL文に変換され、データベースに送信される。このとき、実際にどのようなSQL文が生成されているのかを確認するには、データコンテキスト(DataContext)の「Logプロパティ」を利用する。
LogプロパティはTextWriter型(System.IO名前空間)のプロパティである。つまり、適当なTextWriterオブジェクト(あるいはTextWriterクラスの派生クラスであるStreamWriterクラスなどのオブジェクト)をセットしておけば、データコンテキスト内部で、そのWriteLineメソッドなどが使用されてログが出力されるという仕組みだ。
■標準出力ストリームに出力する場合
生成されるSQL文を標準出力ストリーム(つまりはコマンド・プロンプト)に出力したい場合には、LogプロパティにConsole.Outプロパティの値をセットすればよい。
以下にそのサンプル・プログラムを示す。
| ||
標準出力にログ出力するLINQのサンプル・プログラム(上:C#、下:VB) | ||
このサンプル・プログラムを実行するには、Visual Studio 2008でコンソール・アプリケーションのプロジェクトを作成し、O/Rデザイナを使用してデータコンテキストを作成する必要がある。これについての手順は「特集:C#プログラマーのためのLINQ超入門(後編) LINQによるデータベース・アクセスとO/Rマッピング」を参照していただきたい。O/Rデザイナでは、NorthWindデータベースからOrdersテーブルとEmployeesテーブルの2つを追加する。 |
このサンプル・プログラムをVisual Studio 2008で実行すると、表示されるコンソール・ウィンドウは以下の画面のようになる。この場合には、合計で4つのSELECT文が生成されているのが分かる。なお、生成されるSELECT文が1つでないのは、上記リストの の「r.Employees.LastName」によるもので、Ordersテーブルでの検索結果を基にEmployeesテーブルを検索することになるためである。
上記サンプル・プログラムの実行結果例 |
■ファイルに出力する場合
SQL文を画面ではなくファイルに出力したい場合には、ファイルに対するストリームをStreamWriterクラス(System.IO名前空間)などで作成しておき、それをLogプロパティに設定すればよい。以下にそのサンプル・プログラムを示す。このプログラムでは「c:\log.txt」にログを出力している。
| ||
ファイルにログ出力するLINQのサンプル・プログラム(上:C#、下:VB) | ||
このサンプル・プログラムでは、c:\log.txtにログを出力する。 |
ところで、Visual Studioで開発している場合には、ログの内容(SQL文)が[出力]ウィンドウに出力されれば便利である。Windowsフォーム・アプリケーションの場合には、上記の方法で標準出力に出力すれば、それは[出力]ウィンドウに送られるが、コンソール・アプリケーションやASP.NETアプリケーションではそうはならない。
LINQのログ出力をVisual Studioの[出力]ウィンドウに出力する方法については、次週に解説する予定だ。
利用可能バージョン:.NET Framework 3.5以降 カテゴリ:クラス・ライブラリ 処理対象:LINQ 使用ライブラリ:DataContextクラス(System.Data.Linq名前空間) 使用ライブラリ:Consoleクラス(System名前空間) 使用ライブラリ:StreamWriterクラス(System.IO名前空間) |
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|