SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

VS 2008を利用したASP.NET 3.5の開発方法を学習する

Visual Studio 2008で進化するASP.NET 3.5の開発手法(後篇)

VS 2008を利用したASP.NET 3.5の開発方法を学習する 3


新コントロールの追加(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)。

図12 新しい項目の追加ダイアログ
図12 新しい項目の追加ダイアログ
.dbmlファイル
 LINQ to SQLクラスのファイル拡張子はdbmlです。dbmlファイルはdbml.layoutとdesigner.vb(cs)、2つのパーシャルクラスを自動生成します。興味がある方は中身も確認してみると良いでしょう。
 
LINQ to SQLクラスの保存先について
 [Web サイト]プロジェクトの場合、LINQ to SQLクラスの保存先は「App_Code」フォルダの必要があります。しかし、[Web アプリケーション]プロジェクトの場合は、「App_Code」フォルダ以外の場所に配置することも可能です。[Web サイト]プロジェクトと、[Web アプリケーション]プロジェクトの違いについては、bear.mini氏のブログで詳しく書かれているので興味がある方は参照してください。
 

 LINQ to SQLクラスは、トランザクション、ビュー、ストアドプロシージャのすべてをサポートします。また、データモデルにデータ検証とビジネスロジックのルールを統合する簡単な方法も提供します。

LINQ to SQLデザイナとDataContextオブジェクトの生成

 VS 2008ではLINQ to SQLデザイナが提供されており、LINQ to SQLオブジェクトモデルとしてデータベースをモデル化、視覚化することが可能です(図13)。

図13 LINQ to SQLデザイナ画面(使用しているのはPubsデータベース)
図13 LINQ to SQLデザイナ画面(使用しているのはPubsデータベース)

 今回はサンプルデータベースとして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の開発方法を学習する連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/2023 2008/08/21 21:17

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー