次の方法で共有


ASP.NET MVC 4 Entity Framework スキャフォールディングと移行

Web Camps チーム

Web Camps トレーニング キットのダウンロード

ASP.NET MVC 4 コントローラー メソッドに慣れている場合、または "ヘルパー、フォーム、検証" ハンズオン ラボを完了している場合は、データ エンティティを作成、更新、一覧表示、削除するためのロジックの多くがアプリケーション全体で繰り返されていることに注意する必要があります。 言うまでもなく、モデルに操作するクラスが複数ある場合は、各エンティティ操作と各ビューに対して POST および GET アクション メソッドの記述にかなりの時間を費やす可能性があります。

このラボでは、ASP.NET MVC 4 スキャフォールディングを使用して、アプリケーションの CRUD (作成、読み取り、更新、削除) のベースラインを自動的に生成する方法について説明します。 単純なモデル クラスから始めて、1 行のコードも記述せずに、すべての CRUD 操作と必要なすべてのビューを含むコントローラーを作成します。 単純なソリューションをビルドして実行すると、データ操作用の MVC ロジックとビューと共に、アプリケーション データベースが生成されます。

さらに、Entity Framework の移行を利用して、アプリケーション全体でモデルの更新を実行することがいかに簡単であるかを学習します。 Entity Framework の移行を利用すると、モデルが簡単な手順で変更された後にデータベースを変更できます。 これらすべてのことを念頭に置いて、ASP.NET MVC 4 の最新機能を利用して、Web アプリケーションをより効率的にビルドし、維持できるようになります。

Note

すべてのサンプル コードとスニペットは、Microsoft-Web/WebCampTrainingKit リリースから入手できる Web Camps トレーニング キットに含まれています。 このラボに固有のプロジェクトは、「ASP.NET MVC 4 Entity Framework スキャフォールディングと移行」で入手できます。

目標

このハンズオン ラボでは、次の手順について学習します。

  • コントローラーでの CRUD 操作 ASP.NET スキャフォールディングを使用する方法。
  • Entity Framework の移行を利用してデータベース モデルを変更する方法。

前提条件

このラボを完了するには、次の項目が必要です:

段取り

コード スニペットのインストール

利便性のため、このラボで管理するコードの多くは、Visual Studio コード スニペットとして入手可能です。 コード スニペットをインストールするには、.\Source\Setup\CodeSnippets.vsi ファイルを実行します。

Visual Studio Code スニペットに慣れていない場合、その使用方法については、このドキュメントの付録「付録 B: コード スニペットの使用」を参照してください。


演習

このハンズオン ラボは、次の演習で構成されます。

  1. ASP.NET MVC 4 Entity Framework スキャフォールディングと移行

Note

各演習には、演習を完了した後に得られるはずの、結果のソリューションが含まれる End フォルダーが付帯しています。 このソリューションは、演習の作業についてさらにヘルプが必要な場合に、ガイドとして使用できます。

このラボの推定所要時間: 30 分

演習 1: Entity Framework の移行で ASP.NET MVC 4 スキャフォールディングを使用する

ASP.NET MVC スキャフォールディングを使用すると、標準化された方法で CRUD 操作を簡単に生成し、アプリケーションがデータベース レイヤーと対話できるようにする必要なロジックを作成できます。

この演習では、最初にコードで ASP.NET MVC 4 スキャフォールディングを使用して CRUD メソッドを作成する方法について説明します。 次に、Entity Framework の移行を使用して、データベースの変更を適用してモデルを更新する方法について説明します。

タスク 1- スキャフォールディングを使用して新しい ASP.NET MVC 4 プロジェクトを作成する

  1. まだ開いていない場合は、Visual Studio 2012 を起動します。

  2. [ファイル] - [新規プロジェクト] の順に選択します。 [新規プロジェクト] のダイアログで、[Visual C#] - [Web] セクションの下にある [ASP.NET MVC 4 Web アプリケーション] を選択します。 プロジェクトに MVC4andEFMigrations という名前を付け、場所をこのラボの Source\Ex1-UsingMVC4ScaffoldingEFMigrations フォルダーに設定します。 [ソリューション名][開始] に設定し、[ソリューションのディレクトリを作成] にチェックが入っていることを確認します。 OK をクリックします。

    New ASP.NET MVC 4 Project Dialog Box

    "新規 ASP.NET MVC 4 プロジェクト] ダイアログ ボックス"

  3. [新規 ASP.NET MVC 4 プロジェクト] ダイアログ ボックスでインターネット アプリケーションテンプレートを選択し、Razor が選択されたビュー エンジンであることを確認します。 [OK] をクリックしてプロジェクトを作成します。

    New ASP.NET MVC 4 Internet Application

    "新規 ASP.NET MVC 4 インターネット アプリケーション"

  4. ソリューション エクスプローラーで [モデル] を右クリックし、[追加] - [クラス]の順に選択して単純なクラス ユーザー (PCOC) を作成します。 Person と名前を付け、[OK] をクリックします。

  5. Person クラスを開き、次のプロパティを挿入します。

    (コード スニペット - "ASP.NET MVC 4 と Entity Framework の移行 - Ex1 Person プロパティ")

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    namespace MVC4EF.Models
    {
        public class Person
        {
            public int PersonID { get; set; }
    
            public string FirstName { get; set; }
    
            public string LastName { get; set; }        
        }
    }
    
  6. [ビルド] - [ソリューションをビルド] の順にクリックして変更を保存し、プロジェクトをビルドします。

    Screenshot shows Visual Studio Express 2012 with Build menu, then Build Solutions selected.

    アプリケーションのビルド

  7. ソリューション エクスプローラーで controllers フォルダを右クリックし、[追加] - [コントローラー] の順に選択します。

  8. コントローラーに PersonController という名前を付け、スキャフォールディング オプションに次の値を指定します。

    1. [テンプレート] ドロップダウン リストで Entity Framework オプションを使用して、読み取り/書き込みアクションとビューを含む MVC コントローラーを選択します。

    2. [モデル クラス] ドロップダウン リストで Person クラスを選択します。

    3. [データ コンテキスト] クラスの一覧で、<新規データ コンテキスト...> を選択します。 任意の名前を選択し、[OK] をクリックします。

    4. [ビュー] ドロップダウン リストで、Razor が選択されていることを確認します。

      Adding the Person controller with scaffolding

      "スキャフォールディングを使用した Person コントローラーの追加"

  9. Click [追加] をクリックして、スキャフォールディングを使用する Person 用の新しいコントローラーを作成します。 これで、コントローラー アクションとビューが生成されました。

    After creating the Person controller with scaffolding

    "スキャフォールディングを使用して Person を作成した後"

  10. PersonController クラスを開きます。 CRUD アクション メソッドが自動的に生成されていることに注意してください。

Inside the Person controller

"Person コントローラー内部"

タスク 2 - アプリケーションの実行

この時点で、データベースはまだ作成されていません。 このタスクでは、アプリケーションを初めて実行し、CRUD 操作をテストします。 データベースは、Code First を使用してその場で作成されます。

  1. F5 キーを押してアプリケーションを実行します。

  2. ブラウザーで URL に /Person を追加して Person ページを開きます。

    Application first run

    "アプリケーション: 最初の実行"

  3. 次に、Person ページを調べて、CRUD 操作をテストします。

    1. [新規作成] をクリックして、新しい人物を追加します。 名と姓を入力し、[作成] をクリックします。

      Adding a new person

      新しい人物の追加

    2. ユーザーの一覧では、項目を削除、編集、または追加できます。

      person list

      "ユーザー一覧"

    3. [詳細] をクリックしてユーザーの詳細を開きます。

      Person's details

      "ユーザーの詳細"

  4. ブラウザーを閉じ、Visual Studio に戻ります。 1 行のコードも記述しなくても、モデルからビューまで、アプリケーション全体で person エンティティの CRUD 全体が作成されていることに注意してください。

タスク 3 - Entity Framework の移行を使用したデータベースの更新

このタスクでは、Entity Framework の移行を使用してデータベースを更新します。 Entity Framework の移行機能を使用して、モデルを変更し、データベースに変更を反映することがいかに簡単であるかを確認します。

  1. パッケージ マネージャー コンソールを開きます。 [ツール]>[NuGet パッケージ マネージャー]>[パッケージ マネージャー コンソール] の順に選択します。

  2. パッケージ マネージャー コンソールで、次のコマンドを入力します。

    PMC

    Enable-Migrations -ContextTypeName [ContextClassName]
    

    Enabling Migrations

    "移行を有効にする"

    Enable-Migration コマンドは、データベースを初期化するためのスクリプトを含む Migrations フォルダーを作成します。

    Migrations folder

    "Migrations フォルダー"

  3. Migrations フォルダー内の Configuration.cs ファイルを開きます。 クラス コンストラクターを見つけて、AutomaticMigrationsEnabled 値を true に変更します。

    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
    }
    
  4. Person クラスを開き、そのユーザーのミドル ネームの属性を追加します。 この新しい属性を使用すると、モデルが変更されます。

    public class Person
    {
        public int PersonID { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string MiddleName { get; set; }
    }
    
  5. メニューで [ビルド] - [ソリューションのビルド] の順に選択し、アプリケーションをビルドします。

    Screenshot shows the Build menu, then Build Solutions selected.

    アプリケーションのビルド

  6. パッケージ マネージャー コンソールで、次のコマンドを入力します。

    PMC

    Add-Migration AddMiddleName
    

    このコマンドは、データ オブジェクトの変更を検索し、それに応じてデータベースを変更するために必要なコマンドを追加します。

    Adding a middle name

    "ミドル ネームの追加"

  7. (省略可能) 次のコマンドを実行して、差分更新で SQL スクリプトを生成できます。 これにより、データベースを手動で更新したり (この場合は不要)、他のデータベースに変更を適用したりできます。

    PMC

    Update-Database -Script -SourceMigration:
    
    $InitialDatabase
    

    Generating a SQL script

    "SQL スクリプトを生成する"

    SQL Script update

    "SQL スクリプトの更新"

  8. パッケージ マネージャー コンソールで、次のコマンドを入力してデータベースを更新します。

    PMC

    Update-Database -Verbose
    

    Updating the Database

    "データベースの更新"

    これにより、MiddleName 列が People テーブルに追加され、Person クラスの現在の定義と一致します。

  9. データベースが更新されたら、Controller フォルダーを右クリックし、[追加] - [コントローラー] の順で選択して Person コントローラーを (同じ値で) もう一度追加します。 これにより、新しい属性を追加する既存のメソッドとビューが更新されます。

    Adding a controller update

    "コントローラーの更新"

  10. 追加をクリックします。 次に、値 [PersonController.cs を上書きする][関連するビューを上書きする] を選択し、[OK] をクリックします。

Adding a controller overwrite

"コントローラーの更新"

タスク 4 - アプリケーションの実行

  1. F5 キーを押してアプリケーションを実行します。

  2. /Person を開きます。 ミドル ネーム列が追加されている間、データが保持されていることに注意してください。

    Middle Name added

    "ミドル ネームの追加"

  3. [編集] をクリックすると、現在のユーザーにミドル ネームを追加できます。

    Middle Name edition


まとめ

このハンズオン ラボでは、任意のモデル クラスを使用して ASP.NET MVC 4 スキャフォールディングで CRUD 操作を作成する簡単な手順について説明しました。 次に、Entity Framework の移行を使用して、アプリケーションでデータベースからビューへのエンド ツー エンドの更新を実行する方法について説明しました。

付録 A: Visual Studio Express 2012 for Web のインストール

Microsoft Web Platform Installer を使用して、Microsoft Visual Studio Express 2012 for Web または別の "Express" バージョンをインストールできます。 次の手順では、Microsoft Web Platform Installer を使用して Visual studio Express 2012 for Web をインストールするために必要な手順について説明します。

  1. https://go.microsoft.com/?linkid=9810169 にアクセスします。 または、Web Platform Installer を既にインストールしている場合、それを開き、製品 "Visual Studio Express 2012 for Web with Windows Azure SDK" を検索できます。

  2. [今すぐインストール] をクリックします。 Web Platform Installer がない場合は、最初にダウンロードしてインストールするようにリダイレクトされます。

  3. Web Platform Installer が開いたら、[インストール] をクリックしてセットアップを開始します。

    Install Visual Studio Express

    Visual Studio Express をインストールする

  4. すべての製品のライセンスと使用条件を読み、[同意する] をクリックして続行します。

    Accepting the license terms

    ライセンス条項に同意する

  5. ダウンロードとインストールのプロセスが完了するまで待機します。

    Installation progress

    インストールの進行状況

  6. インストールが完了したら、[完了] をクリックします。

    Installation completed

    インストールの完了

  7. [終了] をクリックして Web Platform Installer を閉じます。

  8. Visual Studio Express for Web を開くには、[スタート] 画面に移動し、「VS Express」と記入して、[VS Express for Web] タイルをクリックします。

    VS Express for Web tile

    VS Express for Web タイル

付録 B: コード スニペットの使用

コード スニペットを使用すると、必要なすべてのコードをすぐに入手できます。 ラボ ドキュメントでは、次の図に示すように、使用できるタイミングが正確に示されています。

Using Visual Studio code snippets to insert code into your project

Visual Studio コード スニペットを使用してプロジェクトにコードを挿入する

キーボードを使用してコード スニペットを追加するには (C# のみ)

  1. コードを挿入する場所にカーソルを置きます。
  2. スニペット名の入力を開始します (スペースやハイフンは使用しない)。
  3. IntelliSense に対応するスニペットの名前が表示されるのを確認します。
  4. 適切なスニペットを選択します (または、スニペットの名前が完全に選択されるまで入力を続けます)。
  5. Tab キーを 2 回押して、カーソル位置にスニペットを挿入します。

Start typing the snippet name

スニペット名の入力を開始する

Press Tab to select the highlighted snippet

Tab キーを押して強調表示されたスニペットを選択する

Press Tab again and the snippet will expand

Tab キーをもう一度押すと、スニペットが展開される

マウスを使用してコード スニペット追加するには (C#、Visual Basic、XML) 1. コード スニペットを挿入する場所を右クリックします。

  1. [スニペットの挿入] に続いて [マイ コード スニペット] を選択します。
  2. 関連するスニペットをクリックして、一覧から選択します。

Right-click where you want to insert the code snippet and select Insert Snippet

コード スニペットを挿入する場所を右クリックし、[スニペットの挿入] を選択する

Pick the relevant snippet from the list, by clicking on it

関連するスニペットをクリックして、一覧から選択する