天天看點

【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以添加該控制器。