共用方式為


新增模型與控制器

下載已完成的專案

在本節中,您將新增定義資料庫實體的模型類別。 然後,您將新增 Web API 控制器,以在這些實體上執行 CRUD 作業。

新增模型類別

在本教學課程中,我們將使用 Entity Framework (EF) 的「Code First」方法來建立資料庫。 使用 Code First,您可以撰寫對應至資料庫資料表的 C# 類別,而 EF 會建立資料庫。 (如需詳細資訊,請參閱 Entity Framework 開發方法。)

首先,我們將領域物件定義為 POCO (一般舊的 CLR 物件)。 我們將建立下列 POCO:

  • 作者
  • 預約

在方案總管中,以滑鼠右鍵按一下 Models 資料夾。 選取 [新增],然後選取 [類別]。 將類別命名為 Author

[方案總管] 資料夾的螢幕擷取畫面,其中顯示以藍色醒目提示的 Models 資料夾,以及以黃色醒目提示的 [新增] 和 [類別] 功能表項目。

將 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 資料表。 (為了簡單起見,我假設每本書都有單一作者。) 書籍類別也包含與Author相關的導覽屬性。 您可以使用導覽屬性來存取程式碼中的相關 Author。 我在第 4 部分「處理實體關聯性」中詳細介紹了導覽屬性。

新增 Web API 控制器

在本結中,我們將新增支援 CRUD 作業 (建立、讀取、更新和刪除) 的 Web API 控制器。 控制器會使用 Entity Framework 與資料庫層通訊。

首先,您可以刪除 Controllers/ValuesController.cs 檔案。 此檔案包含範例 Web API 控制器,但您不需要此教學課程。

[方案總管] 視窗的螢幕擷取畫面,其中顯示 Values Controllers dot c s 檔案醒目提示紅色,指出必須刪除它。

接下來,組建專案。 Web API Scaffolding 會使用反射來尋找模型類別,因此它需要編譯的組件。

在方案總管中,以滑鼠右鍵按一下 Controllers 資料夾。 選取 [新增],然後選取 [控制器]。

[方案總管] 視窗的螢幕擷取畫面,其中 [控制器] 資料夾和 [新增] 和 [控制器] 功能表項目會以藍色和黃色醒目提示。

[新增 Scaffold] 對話方塊中,選取 [具有操作的 Web API 2 控制器,使用 Entity Framework]。 按一下新增

[新增 Scaffold] 對話方塊的螢幕擷取畫面,其中顯示具有動作的 Web A P I 2 控制器,其中以藍色醒目提示使用 Entity Framework 選項。

新增控制項對話方塊中,執行下列動作:

  1. 模型類別下拉式清單中,選取 Author 類別。 (如果您沒有在下拉式清單中看到它,請確定您已組建專案。)
  2. 檢查 [使用非同步控制器動作]。
  3. 將控制器名稱保留為「AuthorsController」。
  4. 按一下資料內容類別旁邊的加號 (+) 按鈕。

[新增控制器] 對話方塊的螢幕擷取畫面,其中顯示紅色圓圈中的加號按鈕,以及在模型類別下拉式清單中選取的作者類別。

在 [新增資料內容] 對話方塊中,保留預設名稱,然後按一下 [新增]。

[新增資料內容] 對話方塊的螢幕擷取畫面,其中顯示 [新增資料內容類型] 欄位中的預設名稱。

按一下新增以完成新增控制器對話方塊。 對話方塊會將兩個類別新增至您的專案:

  • AuthorsController 定義 Web API 控制器。 控制器會實作 REST API,用戶端會用來在作者清單上執行 CRUD 作業。
  • BookServiceContext 管理執行時間的實體物件,包括使用資料庫的資料填入物件、變更追蹤,以及將資料保存至資料庫。 它繼承自 DbContext

[方案總管] 視窗的螢幕擷取畫面,其中顯示 Authors Controller dot c s 檔案和以紅色圓圈的 Book Service Context dot c 檔案。

此時,請再次組建專案。 現在請執行相同的步驟,以新增 Book 實體的 API 控制器。 這次,請選取 Book 模型類別,然後選取資料內容類別的現有 BookServiceContext 類別。 (請勿建立新的資料內容。) 按一下 [新增] 以新增控制器。

[新增控制器] 視窗的螢幕擷取畫面,其中已選取 [模型類別] 下拉式功能表中的 [書籍模型] 類別。