次の方法で共有


チュートリアル : スキャフォールディングを使用した新しい Dynamic Data Web サイトの作成

更新 : 2007 年 11 月

このチュートリアルでは、ASP.NET Dynamic Data を使用する基本的な Web アプリケーションの作成方法について説明します。Dynamic Data を使用すると、データ ドリブン Web サイトを最小限のコードで作成できます。コードを記述する必要がない場合もあります。Dynamic Data の重要な機能に、スキャフォールディング機構があります。Dynamic Data Web サイトでスキャフォールディング機構を有効にすると、ASP.NET によってデータ モデルが分析され、テーブルごとに動的に Web ページが生成されます。自動生成された Web ページでは、各テーブルを対象に、表示、挿入、削除、編集などの機能を実行できます。

このチュートリアルでは、AdventureWorks サンプル データベースのデータのページを表示するアプリケーションを構築します。

この機能を紹介したビデオが用意されています。

前提条件

このチュートリアルを実行するための要件は次のとおりです。

  • Microsoft Visual Studio 2008 Service Pack 1 または Visual Web Developer 2008 Express Edition Service Pack 1。

  • AdventureWorks または AdventureWorksLT サンプル データベース。SQL Server のサンプル データベースをダウンロードしてインストールする方法については、CodePlex サイトの「Microsoft SQL Server Product Samples: Database」を参照してください。実行している SQL Server のバージョン (Microsoft SQL Server 2005 または Microsoft SQL Server 2008) に対応した正しいバージョンのサンプル データベースをインストールしてください。

Dynamic Data Web サイトの作成

Dynamic Data Web サイトは、Visual Studio で Web サイト テンプレートを使用して作成できます。

Dynamic Data Web サイトを作成するには

  1. Visual Web Developer または Visual Studio を起動します。

  2. [ファイル] メニューの [新しい Web サイト] をクリックします。このオプションが存在しない場合は、[新規作成] をポイントし、[Web サイト] をクリックします。

    [新しい Web サイト] ダイアログ ボックスが表示されます。

  3. [Visual Studio にインストールされたテンプレート][Dynamic Data Web サイト] (LINQ to SQL を使用する場合) または [Dynamic Data エンティティ Web サイト] (ADO.NET Entity Framework を使用する場合) を選択します。

  4. 最初の [場所] ボックスの一覧の [ファイル システム] をクリックし、その横のボックスに、Web サイトのページを格納するフォルダの名前を入力します。

    たとえば、フォルダ名として「C:\WebSites\DynamicData」と入力します。

  5. [言語] ボックスで、作業に使用するプログラミング言語をクリックします。

  6. [OK] をクリックします。

  7. Visual Studio によって、Web サイトのフォルダと構造が作成されます。

Web サイトへのデータの追加

次の手順では、プロジェクトにデータベースを追加します。そのためには、Visual Studio に付属するツールを使用して、データベース エンティティを表すクラスを作成します。次に、Dynamic Data で使用するデータ コンテキストを登録します。選択したテンプレートに基づくデータベース モデルの作成には、次の選択肢があります。

  • [Dynamic Data Web サイト] テンプレートを使って Web サイトを作成した場合は、LINQ to SQL を使用してデータベース モデルを作成する必要があります。

  • [Dynamic Data エンティティ Web サイト] テンプレートを使って Web サイトを作成した場合は、Entity Framework を使用してデータベース モデルを作成する必要があります。

データ モデルの選択の詳細については、「ASP.NET Dynamic Data のガイドライン」を参照してください。

プロジェクトにデータベース ファイルを追加するには

  1. Web サイトに App_Data フォルダがない場合は、ソリューション エクスプローラでプロジェクトを右クリックし、[ASP.NET フォルダの追加] をクリックして、[App_Data] をクリックします。

  2. ソリューション エクスプローラで、App_Data フォルダを右クリックし、[既存項目の追加] をクリックします。

    [既存項目の追加] ダイアログ ボックスが表示されます。

  3. AdventureWorks データベース ファイル (AdventureWorks_Data.mdf) がインストールされている場所を入力します。

    既定では、.mdf ファイルはパス C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf にインストールされます。

    Cc488469.alert_note(ja-jp,VS.90).gifメモ :

    この手順では、プロジェクト内のデータベース ファイルのコピーを作成します。データベースのコピーの作成が実用的ではない場合は、データベース ファイルに直接接続するなど、別の方法を使用してデータベースに接続できます。ただし、このチュートリアルでは、この方法は説明しません。

次に、データ モデルを作成します。この手順は、データ モデルの作成に LINQ to SQL と ADO.NET Entity Framework のどちらを使用するかによって若干異なります。

LINQ to SQL を使用してデータ モデルを作成するには

  1. Web サイトに App_Code フォルダがない場合は、ソリューション エクスプローラでプロジェクトを右クリックし、[ASP.NET フォルダの追加] をクリックして、[App_Code] をクリックします。

  2. App_Code フォルダを右クリックし、[新しい項目の追加] をクリックします。

  3. [Visual Studio にインストールされたテンプレート][LINQ to SQL クラス] をクリックします。

  4. [名前] ボックスに、データベース モデルの名前を入力します。

    たとえば、「AdventureWorks.dbml」という名前を入力します。

  5. [追加] をクリックします。

    [オブジェクト リレーショナル デザイナ] が表示されます。

  6. O/R デザイナで、[サーバー エクスプローラ] リンク (Visual Web Developer では [データベース エクスプローラ]) をクリックします。

  7. サーバー エクスプローラ (データベース エクスプローラ) で、[データ接続] の下にあるデータベース ファイルのノードを展開し、[テーブル] ノードを展開します。

  8. すべてのテーブルを O/R デザイナにドラッグします。

    それぞれのテーブルが、対応するデータベース テーブルの名前を持つエンティティとして表されます。

  9. AdventureWorks.dbml ファイルを保存します。

  10. ソリューション エクスプローラで、.dbml ファイルのノードの下にある AdventureWorks.designer.cs ファイルまたは AdventureWorks.designer.vb ファイルを開きます。

    .dbml ファイルに、データベースを表す AdventureWorksDataContext クラスが含まれていることを確認します。このファイルには、Product クラスや Employee クラスなど、データベース テーブルを表すエンティティ クラスも格納されます。AdventureWorksDataContext クラスのパラメータなしのコンストラクタは、Web.config ファイルから接続文字列を読み取ります。

  11. Web.config ファイルを開きます。

    connectionStrings 要素に、AdventureWorks データベースへの接続文字列が含まれていることを確認します。

  12. クラス ファイルと Web.config ファイルを閉じます。

Entity Framework のデータ モデルを作成するには

  1. Web サイトに App_Code フォルダがない場合は、ソリューション エクスプローラでプロジェクトを右クリックし、[ASP.NET フォルダの追加] をクリックして、[App_Code] をクリックします。

  2. App_Code フォルダを右クリックし、[新しい項目の追加] をクリックします。

  3. [Visual Studio にインストールされたテンプレート][ADO.NET エンティティ データ モデル] をクリックします。

  4. [名前] ボックスに、データベース モデルの名前を入力します。

    たとえば、「AdventureWorks.edmx」という名前を入力します。

  5. [追加] をクリックします。

    Entity Data Model ウィザードのウィンドウが表示されます。

  6. [データベースから生成] をクリックします。

    これで、データベースからモデルが生成されるように指定したことになります。

  7. [アプリケーションがデータベースへの接続に使用するデータ接続] で、一覧の [AdventureWorks_Data.mdf] をクリックします。

  8. [エンティティ接続設定に名前を付けて Web.Config に保存] チェック ボックスがオンになっていることを確認します。既定の接続文字列名はそのままにしておいてかまいません。

  9. [次へ] をクリックします。

    モデルに追加するデータベース オブジェクトを指定するためのウィザード ページが表示されます。

  10. [テーブル] ノードを選択し、データベースのすべてのテーブルを選択します。既定のモデルの名前空間はそのままにしておいてかまいません。

  11. [完了] をクリックします。

    ADO.NET Entity Data Model デザイナが表示されます。デザイナを終了します。

  12. ソリューション エクスプローラで、.edmx ファイルのノードの下にある AdventureWorks.designer.cs ファイルまたは AdventureWorks.designer.vb ファイルを開きます。

    .edmx ファイルに、データベースを表す AdventureWorksDataContext クラスが含まれていることを確認します。このファイルには、Product クラスや Employee クラスなど、データベース テーブルを表すエンティティ クラスも格納されます。

  13. Web.config ファイルを開きます。

    connectionStrings 要素に、AdventureWorks データベースへの接続文字列が含まれていることを確認します。

  14. クラス ファイルと Web.config ファイルを閉じます。

次の手順では、Dynamic Data で使用するデータ モデルを登録します。

データ コンテキストを登録するには

  1. Global.asax ファイルを開きます。

  2. LINQ to SQL を使用している場合は、RegisterRoutes メソッドに次の行を追加します。

    model.RegisterContext(GetType(AdventureWorksDataContext), _
        New ContextConfiguration() With {.ScaffoldAllTables = True})
    
    model.RegisterContext(typeof(AdventureWorksDataContext), 
        new ContextConfiguration() { ScaffoldAllTables = true });
    

    これにより、Dynamic Data で使用される LINQ to SQL データ コンテキストが登録され、データ モデルの自動スキャフォールディングが有効になります。

    Cc488469.alert_caution(ja-jp,VS.90).gif注意 :

    スキャフォールディングを有効にすると、データ モデルのすべてのテーブルが、表示操作と編集操作ができるような形で公開されるため、セキュリティ リスクを招く可能性があります。詳細については、「ASP.NET Dynamic Data スキャフォールディングとページ テンプレートの概要」を参照してください。

  3. Entity Framework を使用している場合は、RegisterRoutes メソッドに次の行を追加します。

    model.RegisterContext(GetType(AdventureWorksLT_DataModel.AdventureWorksLT_DataEntities), _
        New ContextConfiguration() With {.ScaffoldAllTables = True})
    
    model.RegisterContext(typeof(AdventureWorksLT_DataModel.AdventureWorksLT_DataEntities), 
        new ContextConfiguration() { ScaffoldAllTables = true });
    

    これにより、Dynamic Data で使用される Entity Framework データ コンテキストが登録され、データ モデルの自動スキャフォールディングが有効になります。

    Cc488469.alert_caution(ja-jp,VS.90).gif注意 :

    スキャフォールディングを有効にすると、データ モデルのすべてのテーブルが、表示操作と編集操作ができるような形で公開されるため、セキュリティ リスクを招く可能性があります。詳細については、「ASP.NET Dynamic Data スキャフォールディングとページ テンプレートの概要」を参照してください。

  4. Global.asax ファイルを保存して閉じます。

Dynamic Data Web サイトのテスト

ここでは、作成した Dynamic Data Web サイトをテストします。

Web サイトをテストするには

  1. ソリューション エクスプローラで、Default.aspx ページを右クリックし、[ブラウザで表示] をクリックします。

    データ モデルに追加したテーブルの一覧がページに表示されます。

  2. いずれかのテーブルをクリックします。たとえば、Products テーブルをクリックします。

    選択したテーブルのデータを含むページが表示されます。テーブルに外部キー フィールドが含まれている場合は、参照されたテーブルの詳細ページへのリンクが用意されます。テーブルが一対多リレーションシップの親テーブルである場合は、子テーブルの一覧ページへのリンクも用意されます。

  3. テーブルからレコードを削除するには、[削除] をクリックします。

  4. レコード間を移動するには、ページ番号をクリックします。

  5. テーブル内のレコードを変更するには、[編集] をクリックします。

  6. 値を変更し、[更新] をクリックするか、[キャンセル] をクリックして編集操作をキャンセルします。

  7. 新しいレコードを作成するには、ページの一番下にある [新しい項目の挿入] ボタンをクリックします。

    データ入力フィールドを持つページが表示されます。

  8. 新しいレコード情報を指定し、[挿入] をクリックします。挿入操作をキャンセルする場合は、[キャンセル] をクリックします。

  9. 完了したら、ブラウザを閉じます。

次の手順

このチュートリアルでは、コードを一切記述することなく、基本的な Dynamic Data Web サイトを作成する方法について説明しています。ここを出発点として、Dynamic Data の機能について調べたり、Dynamic Data の既定の動作を拡張したりできます。

参照

概念

ASP.NET Dynamic Data の概要

その他の技術情報

オブジェクト リレーショナル デザイナ (O/R デザイナ)

LINQ to SQL

ADO.NET Entity Framework