このセクションでは、データベース エンティティを定義するモデル クラスを追加します。 次に、これらのエンティティに対して CRUD 操作を実行する Web API コントローラーを追加します。
モデル クラスの追加
このチュートリアルでは、Entity Framework (EF) に対する "Code First" アプローチを使用してデータベースを作成します。 Code First では、データベース テーブルに対応する C# クラスを記述し、EF によってデータベースが作成されます。 (詳細については、「 Entity Framework の開発アプローチ」を参照してください)。
まず、ドメイン オブジェクトを POC (プレーン古い CLR オブジェクト) として定義します。 次の POCO を作成します。
- Author
- 本
ソリューション エクスプローラーで、[モデル] フォルダーを右クリックします。 [ 追加] を選択し、[クラス]を選択します。 クラスに Author名前を付けます。
Author.cs内のすべての定型コードを次のコードに置き換えます。
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace BookService.Models
{
public class Author
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
}
}
次のコードを使用して、 Bookという名前の別のクラスを追加します。
using System.ComponentModel.DataAnnotations;
namespace BookService.Models
{
public class Book
{
public int Id { get; set; }
[Required]
public string Title { get; set; }
public int Year { get; set; }
public decimal Price { get; set; }
public string Genre { get; set; }
// Foreign Key
public int AuthorId { get; set; }
// Navigation property
public Author Author { get; set; }
}
}
Entity Framework では、これらのモデルを使用してデータベース テーブルを作成します。 モデルごとに、 Id プロパティがデータベース テーブルの主キー列になります。
Book クラスでは、 AuthorId は Author テーブルに外部キーを定義します。 (わかりやすくするために、私は各本が単一の著者を持っていると仮定しています)。book クラスには、関連する Authorへのナビゲーション プロパティも含まれています。 ナビゲーション プロパティを使用して、コード内の関連する Author にアクセスできます。 ナビゲーション プロパティの詳細については、パート 4 の エンティティリレーションの処理に関するページを参照してください。
Web API コントローラーの追加
このセクションでは、CRUD 操作 (作成、読み取り、更新、削除) をサポートする Web API コントローラーを追加します。 コントローラーは Entity Framework を使用してデータベース レイヤーと通信します。
まず、ファイル コントローラー/ValuesController.csを削除できます。 このファイルには Web API コントローラーの例が含まれていますが、このチュートリアルでは必要ありません。
次に、プロジェクトをビルドします。 Web API スキャフォールディングではリフレクションを使用してモデル クラスを検索するため、コンパイル済みのアセンブリが必要です。
ソリューション エクスプローラーで、Controllers フォルダーを右クリックします。 [ 追加] を選択し、[コントローラー] を選択 します。
[ スキャフォールディングの追加 ] ダイアログで、[Entity Framework を使用したアクションを含む Web API 2 コントローラー] を選択します。 追加をクリックします。
[ コントローラーの追加 ] ダイアログで、次の操作を行います。
- [ モデル クラス ] ドロップダウンで、
Authorクラスを選択します。 (ドロップダウンリストに表示されない場合は、プロジェクトをビルドしたことを確認してください)。 - [Use async controller actions]\(非同期コントローラー アクションを使用する\) をオンにします。
- コントローラー名は "AuthorsController" のままにします。
- [データ コンテキスト クラス] の横にあるプラス (+) ボタンをクリックします。
[ 新しいデータ コンテキスト] ダイアログで、既定の名前のままにして [ 追加] をクリックします。
[ 追加 ] をクリックして、[ コントローラーの追加] ダイアログを完了します。 このダイアログでは、次の 2 つのクラスがプロジェクトに追加されます。
-
AuthorsControllerは Web API コントローラーを定義します。 コントローラーは、クライアントが作成者のリストに対して CRUD 操作を実行するために使用する REST API を実装します。 -
BookServiceContextは、実行時にエンティティ オブジェクトを管理します。これには、データベースからのデータを含むオブジェクトの設定、変更の追跡、データベースへのデータの保持が含まれます。DbContextから継承されます。
この時点で、プロジェクトをもう一度ビルドします。 次に、同じ手順を実行して、 Book エンティティ用の API コントローラーを追加します。 今回は、モデル クラスの Book を選択し、データ コンテキスト クラスの既存の BookServiceContext クラスを選択します。 (新しいデータ コンテキストを作成しないでください)。[ 追加] をクリックしてコントローラーを追加します。