次の方法で共有


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

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

このセクションでは、データベース エンティティを定義するモデル クラスを追加します。 次に、これらのエンティティに対して 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 クラスでは、 AuthorIdAuthor テーブルに外部キーを定義します。 (わかりやすくするために、私は各本が単一の著者を持っていると仮定しています)。book クラスには、関連する Authorへのナビゲーション プロパティも含まれています。 ナビゲーション プロパティを使用して、コード内の関連する Author にアクセスできます。 ナビゲーション プロパティの詳細については、パート 4 の エンティティリレーションの処理に関するページを参照してください。

Web API コントローラーの追加

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

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

[ソリューション エクスプローラー] ウィンドウのスクリーンショット。値コントローラーのドット c ファイルが赤で強調表示され、削除する必要があります。

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

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

[コントローラー] フォルダーと [コントローラーの追加] メニュー項目が青と黄色で強調表示されている [ソリューション エクスプローラー] ウィンドウのスクリーンショット。

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

[Entity Framework を使用したアクション] オプションが青色で強調表示されている Web A P I 2 コントローラーを示す [スキャフォールディングの追加] ダイアログのスクリーンショット。

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

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

[コントローラーの追加] ダイアログのスクリーンショット。プラスボタンが赤で囲まれており、[モデル クラス] ドロップダウンで [Author クラス] が選択されています。

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

[新しいデータ コンテキストの種類] フィールドに既定の名前が表示されている [新しいデータ コンテキスト] ダイアログのスクリーンショット。

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

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

Authors Controller dot c s ファイルと Book Service Context dot c s ファイルが赤で囲まれた [ソリューション エクスプローラー] ウィンドウのスクリーンショット。

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

[モデル クラス] ドロップダウン メニューで Book モデル クラスが選択されている [コントローラーの追加] ウィンドウのスクリーンショット。