新增模型與控制器
在本節中,您將新增定義資料庫實體的模型類別。 然後,您將新增 Web API 控制器,以在這些實體上執行 CRUD 作業。
新增模型類別
在本教學課程中,我們將使用 Entity Framework (EF) 的「Code First」方法來建立資料庫。 使用 Code First,您可以撰寫對應至資料庫資料表的 C# 類別,而 EF 會建立資料庫。 (如需詳細資訊,請參閱 Entity Framework 開發方法。)
首先,我們將領域物件定義為 POCO (一般舊的 CLR 物件)。 我們將建立下列 POCO:
- 作者
- 預約
在方案總管中,以滑鼠右鍵按一下 Models 資料夾。 選取 [新增],然後選取 [類別]。 將類別命名為 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
資料表。 (為了簡單起見,我假設每本書都有單一作者。) 書籍類別也包含與Author
相關的導覽屬性。 您可以使用導覽屬性來存取程式碼中的相關 Author
。 我在第 4 部分「處理實體關聯性」中詳細介紹了導覽屬性。
新增 Web API 控制器
在本結中,我們將新增支援 CRUD 作業 (建立、讀取、更新和刪除) 的 Web API 控制器。 控制器會使用 Entity Framework 與資料庫層通訊。
首先,您可以刪除 Controllers/ValuesController.cs 檔案。 此檔案包含範例 Web API 控制器,但您不需要此教學課程。
接下來,組建專案。 Web API Scaffolding 會使用反射來尋找模型類別,因此它需要編譯的組件。
在方案總管中,以滑鼠右鍵按一下 Controllers 資料夾。 選取 [新增],然後選取 [控制器]。
在 [新增 Scaffold] 對話方塊中,選取 [具有操作的 Web API 2 控制器,使用 Entity Framework]。 按一下新增。
在新增控制項對話方塊中,執行下列動作:
- 在模型類別下拉式清單中,選取
Author
類別。 (如果您沒有在下拉式清單中看到它,請確定您已組建專案。) - 檢查 [使用非同步控制器動作]。
- 將控制器名稱保留為「AuthorsController」。
- 按一下資料內容類別旁邊的加號 (+) 按鈕。
在 [新增資料內容] 對話方塊中,保留預設名稱,然後按一下 [新增]。
按一下新增以完成新增控制器對話方塊。 對話方塊會將兩個類別新增至您的專案:
AuthorsController
定義 Web API 控制器。 控制器會實作 REST API,用戶端會用來在作者清單上執行 CRUD 作業。BookServiceContext
管理執行時間的實體物件,包括使用資料庫的資料填入物件、變更追蹤,以及將資料保存至資料庫。 它繼承自DbContext
。
此時,請再次組建專案。 現在請執行相同的步驟,以新增 Book
實體的 API 控制器。 這次,請選取 Book
模型類別,然後選取資料內容類別的現有 BookServiceContext
類別。 (請勿建立新的資料內容。) 按一下 [新增] 以新增控制器。