
- 上原 正吉
- 株式会社アースリンクネットワーク
- Webプロデューサー
対象:システム開発・導入
- 清水 圭一
- (IT経営コンサルタント)
- 村本 睦戸
- (ITコンサルタント)
C# 3.0 LINQ解説 1
LINQといえば必ずと言っていいほど説明されている事項がある。
まずはそれらを解説していこう。
従来、SQL文を書く場合、以下のように文字列として書いていた
(パラメータークエリーなども結局SQLの部分は文字列である)
例として
string sqlSelectUser = "SELECT * FROM T_Users";
この構文は、単なる文字列であるためC#のコンパイラは
クエリの構文が誤っていても検出できない
実行時に初めてエラーがわかるという形である。
そのためエラーの検出が非常に難しく、
実際にそのクエリーを発行するテストを行わなければ、
単純な記述ミスでさえ発見が困難である。
しかし、言語にクエリが統合されると、以下のような書き方ができる。
var sqlSelectUser = from tempData in T_Users select tempData;
(tempDataは任意の変数名たとえば「t」だけとかも可能である)
列を選択したい場合は
var sqlSelectUser = from tempData in T_Users select tempData.Name, tempData.TEL;
と言うように記述することができる
ここで注目したいのは文字列を表す「"」がないということである。
つまりC#の式として認識されているということである、
そのためselect文の後のtempDataのあとで「.」を押せば
ちゃんとインテリセンスが働いてくれるのである。
また、C#の言語ということであるから、
当然文法ミスがあればコンパイルは通らない。
前述したケアレスミスを事前に発見できるのもメリットだ。
現時点では問題もある(2008年09月時点)
※更新系クエリ(INSERT/UPDATE/DELETE)がサポートされていない
※ペシミステック同時実行制御(悲観的同時実行制御)がサポートされていない
注釈
反対の意味としてオプティミスティック同時実行制御(楽観的同時実行制御)がある。ペシミステック同時実行制御の場合データーベースをロックするため更新処理は失敗しない。
だからといって、LINQを使用しないというのは早計である
LINQはそれを補って余りあるポテンシャルを秘めている。
次回からはそれを順番にみていこう。
☆QuickRec--メール・電話・FAXをお客様情報と一緒に全部まとめて一元管理
電話を自動録音することによりトラブルを未然に防ぎます
http://www.quickrec.com/
システム開発のご相談、ホームページ作成なら
アースリンクネットワークへ
http://www.eln.ne.jp