| 連載:[完全版]究極のC#プログラミングChapter17 LINQ to SQL川俣 晶2010/04/14 |  | 
|  | |
17.6 LINQ to SQLのまとめ
LINQ to SQLは、SQL Serverの知識を持たずにプログラムを記述可能とする“魔法の杖”ではない。SQLの細かい構文を調べるためにドキュメントの迷宮をさまよう必要からは解放されるが、RDBの基礎を学ばずに使えるものではない。
さらにいえば、LINQ to SQLがつねに最も効率的なクエリを生成してくれるわけでもない。たとえば、安易なコードを書けば、参照することのない値まで含めて選択するSELECT句が生成されることも珍しくはない。もちろん、それは非効率的なクエリということになる。
それにもかかわらず、筆者はLINQ to SQLを“救いの神”と見る。その理由は、この構造がアセンブラに対するC言語の流行とよく似た構造を持っているからだ。
かつて、パソコンの世界ではBASIC言語とアセンブリ言語(機械語)が2大主流開発言語だった時代がある。そして、この2つを駆逐して主要開発言語の座を獲得したのがC言語である。C言語は機械語の細かい機能を知らずとも効率的なコードを記述できるが、使いこなすためには機械語の基礎知識が必要とされた。なにしろ、C言語が持つポインタという機能は、機械語が扱う生のメモリ空間を直接操作するものである。そして、特に初期のCコンパイラにおいては、安易なソースコードを書けば非効率的な実行ファイルが簡単に生成された。それにもかかわらず、C言語は急速に普及した。支払うものに対して得られるものが圧倒的に多かったからだ。
LINQ to SQLも同様に、支払うものよりも得るものが圧倒的に多いという理由で利用する価値があると考える。つまり、LINQ to SQLを使うためにはRDBの基礎やLINQ to SQLそのものの使い方を学ぶコストを支払う必要があるとしても、それによって得られるものはきわめて大きいと考えられるからだ。また、生成されるSQL文を調べつつ、それを見ながらソースコードを改善していく作業もありだろう。それだけの手間を費やしても、得られるもののほうが多いのではないだろうか?
SQL初心者の立場であれば、ドキュメントの迷宮をさまよいながらゼロから効率的なSQL文のクエリの記述を試みるよりも、LINQ to SQLが生成したSQL文のクエリをもとにして改善できる箇所を考えるほうがずっと楽ではないかと思う。
【Exercise】練習問題
LINQ to SQLについて正しく述べているものを選べ。
- RDBの基礎知識を学ぶ価値はない
- SQLの構文を知らなくても使える
- LINQ to Objectsのクエリ式はすべてLINQ to SQLでも使える
- たった1つのWhereメソッドがLINQ to SQLのLINQ to Objectsで共用される
- クエリの条件式はラムダ式だけでなく匿名メソッドで記述してもよい
|  |  | 
| INDEX | ||
| [完全版]究極のC#プログラミング | ||
| Chapter17 LINQ to SQL | 1.17.1 効率的に列挙可能にするという問題 | |
| 2.17.2 SQL Serverのワナ | ||
| 3.17.3 LINQ to SQLという突破口 | ||
| 4.17.4 LINQ to SQLのサンプル | ||
| 5.17.5 LINQ to SQLとメソッド構文 | ||
|  | 6.17.6 LINQ to SQLのまとめ/練習問題 | |
|  | ||
|  | 「[完全版]究極のC#プログラミング」 | 
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|  | |
| 
 | |
|  | 

 








