ASP.NET MVC 4 Entity Framework スキャフォールディングと移行
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 の移行を利用してデータベース モデルを変更する方法。
前提条件
このラボを完了するには、次の項目が必要です:
- Microsoft Visual Studio Express 2012 for Web 以降 (インストール方法については「付録 A」を参照してください)。
段取り
コード スニペットのインストール
利便性のため、このラボで管理するコードの多くは、Visual Studio コード スニペットとして入手可能です。 コード スニペットをインストールするには、.\Source\Setup\CodeSnippets.vsi ファイルを実行します。
Visual Studio Code スニペットに慣れていない場合、その使用方法については、このドキュメントの付録「付録 B: コード スニペットの使用」を参照してください。
演習
このハンズオン ラボは、次の演習で構成されます。
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 プロジェクトを作成する
まだ開いていない場合は、Visual Studio 2012 を起動します。
[ファイル] - [新規プロジェクト] の順に選択します。 [新規プロジェクト] のダイアログで、[Visual C#] - [Web] セクションの下にある [ASP.NET MVC 4 Web アプリケーション] を選択します。 プロジェクトに MVC4andEFMigrations という名前を付け、場所をこのラボの Source\Ex1-UsingMVC4ScaffoldingEFMigrations フォルダーに設定します。 [ソリューション名] を [開始] に設定し、[ソリューションのディレクトリを作成] にチェックが入っていることを確認します。 OK をクリックします。
"新規 ASP.NET MVC 4 プロジェクト] ダイアログ ボックス"
[新規 ASP.NET MVC 4 プロジェクト] ダイアログ ボックスでインターネット アプリケーションテンプレートを選択し、Razor が選択されたビュー エンジンであることを確認します。 [OK] をクリックしてプロジェクトを作成します。
"新規 ASP.NET MVC 4 インターネット アプリケーション"
ソリューション エクスプローラーで [モデル] を右クリックし、[追加] - [クラス]の順に選択して単純なクラス ユーザー (PCOC) を作成します。 Person と名前を付け、[OK] をクリックします。
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; } } }
[ビルド] - [ソリューションをビルド] の順にクリックして変更を保存し、プロジェクトをビルドします。
アプリケーションのビルド
ソリューション エクスプローラーで controllers フォルダを右クリックし、[追加] - [コントローラー] の順に選択します。
コントローラーに PersonController という名前を付け、スキャフォールディング オプションに次の値を指定します。
[テンプレート] ドロップダウン リストで Entity Framework オプションを使用して、読み取り/書き込みアクションとビューを含む MVC コントローラーを選択します。
[モデル クラス] ドロップダウン リストで Person クラスを選択します。
[データ コンテキスト] クラスの一覧で、<新規データ コンテキスト...> を選択します。 任意の名前を選択し、[OK] をクリックします。
[ビュー] ドロップダウン リストで、Razor が選択されていることを確認します。
"スキャフォールディングを使用した Person コントローラーの追加"
Click [追加] をクリックして、スキャフォールディングを使用する Person 用の新しいコントローラーを作成します。 これで、コントローラー アクションとビューが生成されました。
"スキャフォールディングを使用して Person を作成した後"
PersonController クラスを開きます。 CRUD アクション メソッドが自動的に生成されていることに注意してください。
"Person コントローラー内部"
タスク 2 - アプリケーションの実行
この時点で、データベースはまだ作成されていません。 このタスクでは、アプリケーションを初めて実行し、CRUD 操作をテストします。 データベースは、Code First を使用してその場で作成されます。
F5 キーを押してアプリケーションを実行します。
ブラウザーで URL に /Person を追加して Person ページを開きます。
"アプリケーション: 最初の実行"
次に、Person ページを調べて、CRUD 操作をテストします。
[新規作成] をクリックして、新しい人物を追加します。 名と姓を入力し、[作成] をクリックします。
新しい人物の追加
ユーザーの一覧では、項目を削除、編集、または追加できます。
"ユーザー一覧"
[詳細] をクリックしてユーザーの詳細を開きます。
"ユーザーの詳細"
ブラウザーを閉じ、Visual Studio に戻ります。 1 行のコードも記述しなくても、モデルからビューまで、アプリケーション全体で person エンティティの CRUD 全体が作成されていることに注意してください。
タスク 3 - Entity Framework の移行を使用したデータベースの更新
このタスクでは、Entity Framework の移行を使用してデータベースを更新します。 Entity Framework の移行機能を使用して、モデルを変更し、データベースに変更を反映することがいかに簡単であるかを確認します。
パッケージ マネージャー コンソールを開きます。 [ツール]>[NuGet パッケージ マネージャー]>[パッケージ マネージャー コンソール] の順に選択します。
パッケージ マネージャー コンソールで、次のコマンドを入力します。
PMC
Enable-Migrations -ContextTypeName [ContextClassName]
"移行を有効にする"
Enable-Migration コマンドは、データベースを初期化するためのスクリプトを含む Migrations フォルダーを作成します。
"Migrations フォルダー"
Migrations フォルダー内の Configuration.cs ファイルを開きます。 クラス コンストラクターを見つけて、AutomaticMigrationsEnabled 値を true に変更します。
public Configuration() { AutomaticMigrationsEnabled = true; }
Person クラスを開き、そのユーザーのミドル ネームの属性を追加します。 この新しい属性を使用すると、モデルが変更されます。
public class Person { public int PersonID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string MiddleName { get; set; } }
メニューで [ビルド] - [ソリューションのビルド] の順に選択し、アプリケーションをビルドします。
アプリケーションのビルド
パッケージ マネージャー コンソールで、次のコマンドを入力します。
PMC
Add-Migration AddMiddleName
このコマンドは、データ オブジェクトの変更を検索し、それに応じてデータベースを変更するために必要なコマンドを追加します。
"ミドル ネームの追加"
(省略可能) 次のコマンドを実行して、差分更新で SQL スクリプトを生成できます。 これにより、データベースを手動で更新したり (この場合は不要)、他のデータベースに変更を適用したりできます。
PMC
Update-Database -Script -SourceMigration: $InitialDatabase
"SQL スクリプトを生成する"
"SQL スクリプトの更新"
パッケージ マネージャー コンソールで、次のコマンドを入力してデータベースを更新します。
PMC
Update-Database -Verbose
"データベースの更新"
これにより、MiddleName 列が People テーブルに追加され、Person クラスの現在の定義と一致します。
データベースが更新されたら、Controller フォルダーを右クリックし、[追加] - [コントローラー] の順で選択して Person コントローラーを (同じ値で) もう一度追加します。 これにより、新しい属性を追加する既存のメソッドとビューが更新されます。
"コントローラーの更新"
追加をクリックします。 次に、値 [PersonController.cs を上書きする] と [関連するビューを上書きする] を選択し、[OK] をクリックします。
"コントローラーの更新"
タスク 4 - アプリケーションの実行
F5 キーを押してアプリケーションを実行します。
/Person を開きます。 ミドル ネーム列が追加されている間、データが保持されていることに注意してください。
"ミドル ネームの追加"
[編集] をクリックすると、現在のユーザーにミドル ネームを追加できます。
まとめ
このハンズオン ラボでは、任意のモデル クラスを使用して 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 をインストールするために必要な手順について説明します。
https://go.microsoft.com/?linkid=9810169 にアクセスします。 または、Web Platform Installer を既にインストールしている場合、それを開き、製品 "Visual Studio Express 2012 for Web with Windows Azure SDK" を検索できます。
[今すぐインストール] をクリックします。 Web Platform Installer がない場合は、最初にダウンロードしてインストールするようにリダイレクトされます。
Web Platform Installer が開いたら、[インストール] をクリックしてセットアップを開始します。
Visual Studio Express をインストールする
すべての製品のライセンスと使用条件を読み、[同意する] をクリックして続行します。
ライセンス条項に同意する
ダウンロードとインストールのプロセスが完了するまで待機します。
インストールの進行状況
インストールが完了したら、[完了] をクリックします。
インストールの完了
[終了] をクリックして Web Platform Installer を閉じます。
Visual Studio Express for Web を開くには、[スタート] 画面に移動し、「VS Express」と記入して、[VS Express for Web] タイルをクリックします。
VS Express for Web タイル
付録 B: コード スニペットの使用
コード スニペットを使用すると、必要なすべてのコードをすぐに入手できます。 ラボ ドキュメントでは、次の図に示すように、使用できるタイミングが正確に示されています。
Visual Studio コード スニペットを使用してプロジェクトにコードを挿入する
キーボードを使用してコード スニペットを追加するには (C# のみ)
- コードを挿入する場所にカーソルを置きます。
- スニペット名の入力を開始します (スペースやハイフンは使用しない)。
- IntelliSense に対応するスニペットの名前が表示されるのを確認します。
- 適切なスニペットを選択します (または、スニペットの名前が完全に選択されるまで入力を続けます)。
- Tab キーを 2 回押して、カーソル位置にスニペットを挿入します。
スニペット名の入力を開始する
Tab キーを押して強調表示されたスニペットを選択する
Tab キーをもう一度押すと、スニペットが展開される
マウスを使用してコード スニペット追加するには (C#、Visual Basic、XML) 1. コード スニペットを挿入する場所を右クリックします。
- [スニペットの挿入] に続いて [マイ コード スニペット] を選択します。
- 関連するスニペットをクリックして、一覧から選択します。
コード スニペットを挿入する場所を右クリックし、[スニペットの挿入] を選択する
関連するスニペットをクリックして、一覧から選択する