1. 程式人生 > >【Web API系列教程】3.2 — 實戰:處理資料(新增模型和控制器)

【Web API系列教程】3.2 — 實戰:處理資料(新增模型和控制器)

前言

在本部分中,你將新增用於定義資料庫實體的模型類。然後你將新增用於在這些實體上執行CRUD(Create、Retrieve、Update、Delete——譯者注)操作的Web API 控制器。

新增模型類

在本教程中,我們將通過使用“Code First”的方法對實體框架(EF)來建立資料庫。對於Code First,你寫C#類來相應資料庫表,使用EF來建立資料庫。(有關詳細資訊,見Entity Framework Development Approaches.)

首先,我們定義我們的域物件作為POCO。我們將建立以下POCO:
Author
Book

在解決方案資源管理中,右擊Models資料夾。選擇Add,然後選擇Class。名為這個類為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表。(簡單起見,我假定每本書只有一個作者。)該book類還包含一個導航屬性給相關的Author。 你可以使用導航屬性在程式碼中訪問相關的作者。我在【Web API系列教程】3.4 — 實戰:處理資料(處理實體關係)
中描述了關於導航屬性的更多資訊。

新增Web API 控制器

在這部分,我們將新增支援CRUD(create, read, update 和 delete)的Web API 控制器。這些控制器使用Entity Framework來同資料庫層交流。

首先,你應該刪除Controllers目錄下的ValuesControllers.cs檔案。這個檔案包含了一個Web API示例,但對於本教程你並不需要它。

這裡寫圖片描述

然後,編譯這個專案。Web API框架使用反射來發現這個模型類,所以它需要編譯程式集。

在Solution Explorer中,右擊Controllers資料夾。選擇Add,然後選擇Controller。

這裡寫圖片描述

在Add Scaffold對話方塊中,選擇“Web API 2 controller with actions, using Entity Framework”。點選Add。

這裡寫圖片描述

在Add Controller對話方塊中,執行以下操作:
1, 在模型類下拉框中,選擇Author類。(如果你沒有在下拉框中看到它,請確保已經編譯了這個專案。)
2, 選中“Use async controller action”。
3, 保留控制器名稱為“AuthorsController”。
4, 點選加號(+)按鈕下一步到Data Context Class.

這裡寫圖片描述

在New Data Context對話方塊中,保留預設名稱並點選Add。

這裡寫圖片描述

點選Add以完成Add Controller對話方塊。這個對話將新增兩個類到你的專案中:
AuthorsController定義了一個Web API控制器。這個控制器實現了REST API,客戶端使用它來在authors列表上執行CRUD操作。
BookServiceContext在執行時管理實體物件,包括從資料庫中聚集物件資料、追蹤、保留資料到資料庫。它繼承自DBContext。

這裡寫圖片描述

在這個節點上,再次編譯這個專案。現在再過一遍相同的步驟為Book實體新增API控制器。這次選擇Book作為模型類,並選擇已經存在的BookServiceContext類作為資料上下文類。(不要再建立新的資料上下文。)點選Add以新增該控制器。

這裡寫圖片描述