特集:Visual Studio 2008&ASP.NET 3.5

ASP.NETアプリ開発者のための
Visual Studio 2008新機能 Part III

山田祥寛(http://www.wings.msn.to/
2008/03/14
Page1 Page2 Page3 Page4

ASP.NETページでLINQ機能を利用する − LinqDataSourceコントロール −

 VS 2008(正確には.NET Framework 3.5)の新機能として最も注目されているのがこれ、「LINQ(Language Integrated Query:統合言語クエリ)」である。

 LINQとは、要は、

『データベースをはじめ、データセット(ADO.NET)、.NET Frameworkコレクション、XMLデータなどさまざまなデータソースに対して、一元的なアクセスの手段を提供する仕組み』

のこと。LINQに関する詳細は、後日別記事で紹介される予定なので、本稿では、純粋にASP.NETページでLinqDataSourceコントロールを利用する手順について解説を進めるものとする。

 LinqDataSourceコントロールは、名前からも容易に推測できるようにデータソース・コントロールの一種で*6、「LINQ to SQL」経由で取得したデータをデータアクセス・コントロールにバインドするための機能を提供するものだ。LINQ to SQLは、特にデータベースにアクセスするためのLINQの機能である。

 それではさっそく、具体的なサンプルを見ていくことにしよう。なお、本サンプルを実行するには、先ほどListViewコントロールの項で紹介したBookテーブルをあらかじめ用意しておく必要がある。

*6 データソース・コントロールに関する詳細は、拙稿「無償データベース SQL Server 2005 Express Editionを使ってみよう」も参照いただきたい。

[1]新規にLINQ to SQLクラスを生成する

 LINQ to SQLクラスは、リレーショナル・データベースをオブジェクトに関連付ける――いうなれば、O/R(Object/Relational)マッピングのための機能を提供するものだ。LinqDataSourceコントロールを利用するには、まずLINQ to SQLクラスを作成しておく必要がある。

 LINQ to SQLクラスを作成するには、ソリューション・エクスプローラから「App_Code」フォルダを右クリックし、表示されたコンテキスト・メニューから[新しい項目の追加]を選択すればよい。

 [新しい項目の追加]ダイアログが表示されるので、次の図9の要領でLINQ to SQLクラス(Book.dbml)を作成する。

図9 [新しい項目の追加]ダイアログ

 LINQ to SQLクラスを作成すると、図10のようなデザイナ画面が開くので、ここではサーバ・エクスプローラからあらかじめ用意しておいたBookテーブルをデザイナ画面の左側にドラッグ&ドロップしよう*7。これによって、「Bookテーブル」にマッピングされた「Bookクラス」が自動生成される。

*7 ちなみに、デザイナ画面の右側へは、ストアドプロシージャなどをドラッグ&ドロップすることで、データベース操作のためのメソッドを自動生成できる。

図10 LINQ to SQLクラスを生成するためのデザイナ画面
サーバ・エクスプローラから必要なテーブルをドラッグ&ドロップすることで、対応するクラスを自動生成できる。

 LINQ to SQLクラス(のデザイナ画面)では複数のテーブルをドラッグ&ドロップし、さらにテーブル同士に関連や継承を設定することも可能であるが、ここでは取りあえずBookテーブルを配置しただけで「.dbml」ファイルを保存しておく。

[2]LinqDataSourceコントロールを配置する

 ここでは、先ほど紹介したListView.aspxを、LinqDataSourceコントロールを使って書き換えてみることにしよう。

 ListView.aspxにはすでにSqlDataSourceコントロールが配置されているはずなので、まずはこれを削除し、あらためてLinqDataSourceコントロールを配置する。また、ListViewコントロールとの関連付けを壊さないように、LinqDataSourceコントロールのID値は「sds」としておこう。

図11 ListView.aspxのフォーム・レイアウト
  LinqDataSourceコントロール(sds)を配置。

 LinqDataSourceコントロールの挙動を設定するには、LinqDataSourceコントロール右肩からタスク・メニューを開き、[データソースの構成]を選択する。[データソースの構成]ダイアログが開くので、以下の画面の要領で必要な情報を入力していこう。

図12 [コンテキスト オブジェクトの選択]ダイアログ
  「コンテキスト オブジェクトの選択」で「BookDataContext」を選択。

図13 [データの選択の構成]ダイアログ
  選択列として「*」を選択。
  [詳細設定]ボタンをクリック。

図14 [詳細設定]ダイアログ
各項目にチェックを入れる。

 SqlDataSource/ObjectDataSourceコントロールの設定に慣れていれば、LinqDataSourceコントロールもほとんど同じ要領で設定できることがお分かりになるだろう。ここで注目いただきたいのは、以下の点だ。

(1)コンテキスト・オブジェクトの命名規則

 コンテキスト・オブジェクトは、DataContextクラス(System.Data.Linq名前空間)の派生クラスで、LINQ to SQLクラス(「.dbml」ファイル)を作成したタイミングで自動的に生成される。データ・マッピングの管理をはじめ、データソースに対して行われた変更を追跡、書き戻す手段を提供する――LINQ to SQLの管理塔といってもよいだろう。

 コンテキスト・オブジェクトの名前は、デフォルトで「<.dbmlファイルのベース名>DataContext」である。

(2)挿入/更新/削除を行う場合の制限

 LinqDataSourceコントロールで、挿入/更新/削除機能を使用するには、LINQ to SQLクラスの全列を取得する場合に限られている。一部の列しか取得しないケースでは、コーディングレスでの挿入/更新/削除機能は利用できないので、注意すること。

 そうした意味で、LinqDataSourceコントロールはLINQの限定された機能を簡易に利用するためのコントロールであるととらえるべきだ。利用に当たっても、参照を中心とした用途にとどめるなど、制限を理解したうえでの使いどころを考えていく必要があるだろう。

 以上で、LinqDataSourceコントロールを利用するための手続きは完了だ。ウィザードを閉じたら、更新したListView.aspxを実行してみよう。先ほどと同様にテンプレートで設定された内容がリスト表示されれば成功である。

 以上、ASP.NET 3.5の新機能として、まずは3つの新しいコントロールについて解説した。次回では引き続き、ASP.NET 3.5のもう1つの新機能である「ASP.NET AJAX」について解説していく予定だ。

 ASP.NET AJAXは1.0が以前より単体でリリースされていたのでASP.NET 3.5のまったくの新機能というわけではないが、ASP.NET 3.5に標準搭載されたタイミングでいくつかの改良が加えられている。次回もお見逃しなく。End of Article


 INDEX
  Visual Studio 2008&ASP.NET 3.5
  ASP.NETアプリ開発者のためのVisual Studio 2008新機能 Part I
    1.JavaScriptサポートを大幅に強化
    2.外部のJavaScriptライブラリやサービス・メソッドも認識可能
    3.サービス・メソッドを利用する場合/自作ライブラリにもツール・ヒントを表示
    4.機能強化されたJavaScriptのデバッグ機能
 
  ASP.NETアプリ開発者のためのVisual Studio 2008新機能 Part II
    1.CSSサポートもますます使いやすく(1)
    2.CSSサポートもますます使いやすく(2)
    3.マルチターゲッティング機能/分割ビュー
    4.マスタ・ページのネスト機能/エクステンダ・ウィザード
 
  ASP.NETアプリ開発者のためのVisual Studio 2008新機能 Part III
    1.新しいデータアクセス・コントロール − ListViewコントロール −(1)
    2.新しいデータアクセス・コントロール − ListViewコントロール −(2)
    3.より柔軟なページャの配置を可能にする − DataPagerコントロール −
  4.ASP.NETページでLINQ機能を利用する − LinqDataSourceコントロール −
 
  ASP.NETアプリ開発者のためのVisual Studio 2008新機能 Part IV
    1.UpdatePanelコントロールの適用範囲が拡大
    2.ロール・アクセスに対応したアプリケーションサービス・ブリッジ
    3.Webサービス・ブリッジがWCFをサポート


Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間