|
.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」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -



