次の方法で共有


モデルとコントローラーの追加

完成したプロジェクトをダウンロードする

このセクションでは、データベース エンティティを定義するモデル クラスを追加します。 次に、これらのエンティティに対して CRUD 操作を実行する Web API コントローラーを追加します。

モデル クラスを追加する

このチュートリアルでは、Entity Framework (EF) に対する "Code First" アプローチを使用してデータベースを作成します。 Code First では、データベース テーブルに対応する C# クラスを記述すると、EF によってデータベースが作成されます。 (詳細については、「Entity Framework 開発アプローチ」を参照してください)。

まず、doメイン オブジェクトを POCO (単純な従来の CLR オブジェクト) として定義します。 次の POCO を作成します。

  • 作成者
  • 書籍

ソリューション エクスプローラーで、[モデル] フォルダーを右クリックします。 [追加] を選択し、[クラス] を選択します。 クラスに Author という名前を付けます。

Screenshot of the Solution Explorer folder showing the Models folder highlighted in blue and the Add and Class menu items highlighted in yellow.

この 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 クラスでは、AuthorIdAuthor テーブルに外部キーを定義します。 (わかりやすくするために、各ブックの作成者が一人であると仮定しています)。book クラスには、関連する Author へのナビゲーション プロパティも含まれています。 ナビゲーション プロパティを使用して、コード内の関連する Author にアクセスできます。 ナビゲーション プロパティの詳細については、パート 4 の「エンティティ関係の処理」を参照してください。

Web API コントローラーを追加する

このセクションでは、CRUD 操作 (作成、読み取り、更新、削除) をサポートする Web API コントローラーを追加します。 コントローラーは Entity Framework を使用してデータベース レイヤーと通信します。

まず、Controllers/ValuesController.cs ファイルを削除できます。 このファイルには Web API コントローラーの例が含まれていますが、このチュートリアルでは必要ありません。

Screenshot of the Solution Explorer window showing with the Values Controllers dot c s file highlighted in red indicating it must be deleted.

次に、プロジェクトをビルドします。 Web API スキャフォールディングではリフレクションを使用してモデル クラスを検索するため、コンパイル済みのアセンブリが必要です。

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

Screenshot of the Solution Explorer window with the Controllers folder and the Add and Controller menu items highlighted in blue and yellow.

[スキャフォールディングの追加] ダイアログで、[Entity Framework を使用したアクションがある Web API 2 コントローラー] を選択します。 追加をクリックします。

Screenshot of the Add Scaffold dialog showing the Web A P I 2 Controller with actions using Entity Framework option highlighted in blue.

[コントローラーの追加] ダイアログで、次の操作を行います。

  1. [モデル クラス] ドロップダウンで、Author クラスを選択します。 (ドロップダウンにそのクラスが表示されない場合は、プロジェクトをビルドしたことを確認してください)。
  2. [Use async controller actions] (非同期コントローラー アクションを使用する) をオンにします。
  3. コントローラー名は "AuthorsController" のままにします。
  4. [データ コンテキスト クラス] の横にあるプラス (+) ボタンをクリックします。

Screenshot of the Add Controller dialog showing the plus button circled in red and the Author class selected in the Model class dropdown.

[新しいデータ コンテキスト] ダイアログで、既定の名前をそのままにして、[追加] をクリックします。

Screenshot of the New Data Context dialog showing the default name in the New data context type field.

[追加] をクリックして、[コントローラーの追加] ダイアログを完了します。 このダイアログでは、次の 2 つのクラスがプロジェクトに追加されます。

  • AuthorsController は Web API コントローラーを定義します。 コントローラーは、クライアントが作成者のリストに対して CRUD 操作を実行するために使用する REST API を実装します。
  • BookServiceContext によって、実行時にエンティティ オブジェクトが管理されます。これには、オブジェクトへのデータベースのデータの設定、変更の追跡、データベースへのデータの保持が含まれます。 DbContext から継承します。

Screenshot of the Solution Explorer window with the Authors Controller dot c s file and the Book Service Context dot c s file circled in red.

この時点で、プロジェクトをもう一度ビルドします。 次に、同じ手順を実行して、Book エンティティの API コントローラーを追加します。 今回は、モデル クラスの Book を選択し、データ コンテキスト クラスの既存の BookServiceContext クラスを選択します。 (新しいデータ コンテキストを作成しないでください)。[追加] をクリックしてコントローラーを追加します。

Screenshot of the Add Controller window with the Book model class selected in the Model class dropdown menu.