CodeZine(コードジン)

特集ページ一覧

ASP.NET Dynamic Dataでデータベースのユーザーインターフェイス作成を簡単に

データベース編集用のWebベースのインターフェースを短時間で作成

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/07/29 14:00

 .NET Framework 3.5 SP1で新たに搭載された「ASP.NET Dynamic Data」という機能を使うと、ASP.NETのWebアプリケーションにデータベース編集機能を手軽に実装できます。この記事では、ASP.NET Dynamic DataによるWebアプリケーションの作成とカスタマイズについて、順を追って紹介します。

目次

はじめに

 ASP.NETのWebアプリケーションにデータベースの編集機能を実装した経験がある方は多いと思います。作業自体は特に難しいわけではありませんが、時間がかかって面倒ですし、同じことの繰り返しもたびたび発生します。手順も地道です。データベースのテーブルを解析し、テーブルの各フィールドに適した編集コントロールを作成し、データベースを更新するロジックを記述して、やっと一段落です。この作業を、対応すべきテーブルすべてに対して繰り返していかなくてはなりません。

 もっと時間を節約できる方法はないものかと考えている方に、ぴったりの機能があります。それは、.NET Framework 3.5 SP1(Service Pack 1)で新たに搭載された「ASP.NET Dynamic Data」という機能です。この機能を使えば、データベース編集用のWebベースのインターフェースを短時間で作成できます。ASP.NET Dynamic Dataは作成、読み込み、更新、削除という基本的なデータベース操作をすべてサポートしており、目的のテーブルに対して基本的なCRUD(Create/Read/Update/Delete)操作を実行するWebインターフェースを簡単に作成できます。

 図1は、ASP.NET Dynamic Dataで作成した編集ページの例です。データベースに対する4種類の基本操作に対応したページがプロジェクトテンプレートにあらかじめ用意されており、表示や編集の対象となるテーブルを指定すれば済みます。

図1:Dataで生成された編集ページの例
図1:Dataで生成された編集ページの例

 この記事では、ASP.NET Dynamic DataによるWebアプリケーションの作成とカスタマイズについて、最初の手順からアプリケーションの完成まで順を追って紹介していきます。サンプルコードはC#です。データソースには、SQL ServerのサンプルデータベースとしておなじみのNorthwindを使用します。

Dynamic Dataの第1歩

 ではさっそくASP.NET Dynamic Dataアプリケーションを作ってみましょう。最初は簡単に開発できるアプリケーションから入りますが、それでも十分使い物になる出来栄えです。まずは、Visual Studio 2008 Service Pack 1.NET Framework 3.5 Service Pack 1をインストールしましょう。両方をインストールすると、Visual Studioの[新しいプロジェクト]ダイアログボックスに、ASP.NET Dynamic Data関連のテンプレートが2つ表示され、選択可能となります(図2を参照)。

図2:Visual Studio 2008 SP1に新たに追加されたDynamic Dataのプロジェクトテンプレート
図2:Visual Studio 2008 SP1に新たに追加されたDynamic Dataのプロジェクトテンプレート

 ASP.NET Dynamic Dataはデータベース用のユーザーインターフェースを作成するための機能なので、データベースへのアクセス方法も複数あります。具体的には、LINQ to SQLと、ADO.NET Entity Framework(ADO.NET Entitiesと略記)という2つに対応しています。技術的には、1つのASP.NET Dynamic Dataプロジェクトの中で両方のデータアクセス方法を混在して使うことも可能ですが、通常はどちらか一方に決めて、そちらで統一します。

 つまり、ASP.NET Dynamic Dataアプリケーションの開発に取りかかるときには、データアクセス方法を早い段階で決めなくてはならないのが普通です。プロジェクトを開始する前に、データベースへのアクセス方法を検討しておくのがよいでしょう。

 この記事では、データベースアクセスのさまざまなニーズにエレガントに対応できるADO.NET Entity Frameworkを使用します。従って、[新しいプロジェクト]ダイアログ ボックスでは、[ASP.NET Dynamic DataエンティティWebアプリケーション]というテンプレートアイコンを選択します。プロジェクトの名前を指定して[OK]をクリックすると、スケルトンアプリケーションを配置した新規ソリューションが作成されます。

 他の種類のアプリケーションの場合は、作成したプロジェクトをそのまま実行してもきちんと動作することが多いのですが、ASP.NET Dynamic Dataアプリケーションの場合は、そうはいきません。何も変更を加えずにアプリケーションをそのまま実行しようとすると、アクセス可能なテーブルがないというエラーが表示されます。でも心配はご無用です。この問題は簡単に修正できます。

 この原因は簡単で、アプリケーションが使用するデータベースを指定していないことにあります。データベース接続がなければ、アプリケーションがデータを表示できないのは当然です(エラーメッセージがもっと分かりやすければいいのに、とも言えますが)。つまり、問題を解決するには、データベース接続を定義すればいいということになります。

 先ほど選んだプロジェクトテンプレートはADO.NET Entities用ですので、その種類の接続をプロジェクトに追加する必要があります。それには、Visual Studioのソリューションエクスプローラでメインのプロジェクトノードを右クリックし、コンテキストメニューで[新しい項目の追加]を選択します。すると[新しい項目の追加]ダイアログボックスが表示されます。このダイアログボックスから[ADO.NET エンティティ データ モデル]オブジェクトを選択し(左側の[データ]セクションから見つけるのが簡単)、オブジェクトの名前を指定します。オブジェクトにはデータベースにちなんだ名前を付けるのがよいでしょう。例えば、SQL ServerのサンプルデータベースNorthwindを使用する場合なら「NorthwindModel」とする、などです。

 [OK]をクリックするとEntity Data Modelウィザードが表示されます(図3を参照)。まずは、データベースからモデルを作成するか、空のモデルを作成するかの選択です。ASP.NET Dynamic DataアプリケーションにはSQLデータベースがいずれにせよ必要になるので、通常は既存のデータベースを基にしてモデルを生成する方が手軽です。ウィザードの次の手順では、データベースの接続文字列を指定します。これはもちろんデータベースに応じて変わりますが、最低でも、サーバの名前(ホスト名)、データベース名、およびユーザーIDとパスワードが必要です。

図3:Entity Data Modelウィザード
図3:Entity Data Modelウィザード

 必要事項をすべて指定したら、ウィザードを先へ進めます。ここでは、モデルに含めるテーブル、ビュー、ストアドプロシージャをすべて指定します。基になるテーブルを直接操作するのが最も簡単ですが、必ずしも最適な方法とは言えません。例えば、ビューを使用しておけば、後でテーブルの構造を変えた場合でもアプリケーションに影響がおよびません。これらのデータベースオブジェクト(以後、この記事では、ビューやストアドプロシージャも含めて簡潔に「テーブル」と表すことにします)を選択すれば準備は完了です。[完了]をクリックするとエンティティモデルが作成されます。結果は図4のようになります。プロジェクトには、モデルをXMLで記述した.edmxファイルが新たに追加されています。

図4:Visual StudioでのEntity Data Modelの表示
図4:Visual StudioでのEntity Data Modelの表示

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

あなたにオススメ

著者プロフィール

  • japan.internet.com(ジャパンインターネットコム)

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

  • Jani Jarvinen(Jani Jarvinen)

    フィンランドのソフトウェア開発トレーナー兼コンサルタント。Microsoft C# MVPの受賞者で、投稿も多数。ソフトウェア開発に関する著書も3冊出版している。ITpro.fiというフィンランドのソフトウェア開発エキスパートグループのグループリーダー。ブログのアドレスはhttp://www.sau...

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5