Visual Studio 2008で進化するASP.NET 3.5の開発手法(後篇)
VS 2008を利用したASP.NET 3.5の開発方法を学習する 3
ダウンロード サンプルファイル (15.2 KB)
新コントロールの追加(LinqDataSource/ListView/DataPager)
VS 2008では新たにLinqDataSource/ListView/DataPagerの3つのコントロールが追加されました(AJAX Extensions除く)。本項ではこれらのコントロールの簡単な使い方について解説します。
<asp:LinqDataSource>コントロール
LinqDataSourceコントロールはSqlDataSource、ObjectDataSourceなどと同様のデータソースコントロールです。LinqDataSourceコントロールの特徴と利点は名前の通り、LINQ(詳細は後述)を利用してデータソースをASP.NETサーバーコントロールにバインドすることができる点です。しかし、このLinqDataSourseコントロールにはいくつかの制限もあります。現時点で判明している制限は以下の2点です。
- 取得したデータの編集・削除・更新を行う場合には、全列選択(*)を選択する必要がある(SELECT句の指定ができない)
- Where句、OrderBy句しか実装できない(Join句は利用できない)
以上の理由からLinqDataSourceコントロールは、制限付きのLINQが使えるデータソースコントロールと言えます。筆者が触れてみた感想として、このコントロールは参照系のページで利用するのが好ましいと感じました。とはいっても、制限がある中でうまく活用する方法もあると思うので、どのように使うかは各自が工夫して利用していただければと思います。
今回はGridViewコントロールを使って、参照から更新までのサンプルをダイアログ設定のみ(コーディングレス)で作成します(サンプルソースの「LinqDataSourceSample.aspx」)。ただし、このサンプルを理解するには、まずLINQ to SQLを理解する必要があります。LINQは後述しますが、先にLINQ to SQLについて解説します。
LINQ to SQLクラス
LINQ to SQLクラスとは.NET Framework 3.5から利用することができるO/Rマッピングの実装クラスです。ソリューション エクスプローラから[新しい項目の追加]で追加できます(図12)。
LINQ to SQLクラスは、トランザクション、ビュー、ストアドプロシージャのすべてをサポートします。また、データモデルにデータ検証とビジネスロジックのルールを統合する簡単な方法も提供します。
LINQ to SQLデザイナとDataContextオブジェクトの生成
VS 2008ではLINQ to SQLデザイナが提供されており、LINQ to SQLオブジェクトモデルとしてデータベースをモデル化、視覚化することが可能です(図13)。
今回はサンプルデータベースとしてPubsを利用します。サンプルを実行する際には、記事内のテーブルを準備してください。
LINQ to SQLのデザイン画面では、サーバーエクスプローラから利用するテーブルをドラッグしてデザイン画面へとドロップします。これにより、Pubsデータベース内のテーブルにマッピングされたクラスが作成されます。また、複数のテーブルをドロップした際、配置されたクラス同士に関係(アソシエーション)があると、アソシエーションや継承の矢印が自動表示されます。これらはデータベースでプライマリキーや外部キーのリレーションシップを使用してモデル化されます。
利用するテーブルの配置後に保存すると、DataContextオブジェクトが生成されます。サンプルではtitlesテーブル、salesテーブルを配置後に保存します。
DataContextオブジェクトとは、エンティティとモデル化したデータベースの関係を表すオブジェクトです。このオブジェクトはデータベースからエンティティに対する問い合わせクエリを行ったり、変更を適用したりします。また、データベース内でモデル化した各テーブルを表すプロパティと、追加した各ストアドプロシージャを実行するためのメソッドを持ちます。
ASP.NETでLINQ to SQLを利用しようとする場合、2つのアプローチがあります。
- ページにLINQのクエリを記述
- LinqDataSourceコントロールを利用
この2つはDataContextオブジェクトを利用する段階までは同じですが、そこからクエリを行う部分は扱い方が変わります。汎用的に利用できるのが前者、データ参照をメインで扱うための後者というイメージで捉えてください(ページにLINQのクエリを記述する方法については後述します)。
この記事は参考になりましたか?
- VS 2008を利用したASP.NET 3.5の開発方法を学習する連載記事一覧
-
- Visual Studio 2008で進化するASP.NET 3.5の開発手法(後篇)
- Visual Studio 2008で進化するASP.NET 3.5の開発手法(中篇)
- Visual Studio 2008で進化するASP.NET 3.5の開発手法(前篇)
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト ナオキ(ナオキ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア



