在本節中,您將新增定義資料庫實體的模型類別。 然後,您將新增 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.cs 檔案被以紅色醒目提示,指出該檔案必須刪除。
接下來,組建專案。 Web API 樣板會使用反射來尋找模型類別,因此它需要已編譯的組件。
在方案總管中,以滑鼠右鍵按一下 Controllers 資料夾。 選取 [新增],然後選取 [控制器]。
[方案總管] 視窗的螢幕擷取畫面,其中 [控制器] 資料夾,以及 [新增] 和 [控制器] 功能表項目以藍色與黃色醒目顯示。
在 新增 Scaffold 對話方塊中,選取「使用 Entity Framework 的 Web API 2 控制器及其操作」。 按一下新增。
此為[新增 Scaffold] 對話方塊的螢幕截圖,顯示具有使用 Entity Framework 選項的 Web API 2 控制器,其動作選項以藍色顯示。
在新增控制項對話方塊中,執行下列動作:
- 在模型類下拉式清單中,選取 類別。 (如果您沒有在下拉式清單中看到它,請確定您已組建專案。)
- 勾選 [使用非同步控制器動作]。
- 將控制器名稱保留為「AuthorsController」。
- 按一下資料內容類別旁邊的加號 (+) 按鈕。
[新增控制器] 對話方塊的螢幕擷取畫面,其中顯示用紅色圈出的加號按鈕,以及在模型類別下拉式選單中已選擇的 Author 類別。
在 [新增資料內容] 對話方塊中,保留預設名稱,然後按一下 [新增]。
[新增資料內容] 對話方塊的螢幕擷取畫面,其中顯示 [新增資料內容類型] 欄位中的預設名稱。
按一下新增以完成新增控制器對話框。 對話方塊會將兩個類別新增至您的專案:
-
AuthorsController定義 Web API 控制器。 控制器會實作 REST API,用戶端會用來在作者清單上執行 CRUD 作業。 -
BookServiceContext管理執行時期的實體物件,包括將資料從資料庫填入物件、變更追蹤,以及將資料持久化至資料庫。 它繼承自DbContext。
此時,請再次組建專案。 請執行相同的步驟,以新增 Book 實體的 API 控制器。 這次,請選取 Book 作為模型類別,然後選取資料內容類別的現有 BookServiceContext 類別。 (請勿建立新的資料內容。) 按一下 [新增] 以新增控制器。
[新增控制器] 視窗的截圖,顯示在 [模型類] 下拉式功能表中已選擇 [書籍] 類別。