使用 Code First 遷移來初始化資料庫

下載已完成的專案

在本節中,您將在 EF 中使用 Code First 移轉來將測試資料初始化到資料庫中。

[工具] 功能表選取 [NuGet 套件管理員],然後選取 [套件管理員主控台]。 在「套件管理員控制台」視窗中,輸入以下命令:

Enable-Migrations

此命令會將名為 Migrations 的資料夾新增至您的專案,並在 Migrations 資料夾中新增名為 Configuration.cs 的程式碼檔案。

方案總管螢幕擷取畫面展示資料夾階層,其中 [Configuration.cs] 檔案用藍色醒目顯示。

開啟 Configuration.cs 檔案。 新增以下using陳述式。

using BookService.Models;

然後將以下程式碼新增到 Configuration.Seed 方法中:

protected override void Seed(BookService.Models.BookServiceContext context)
{
    context.Authors.AddOrUpdate(x => x.Id,
        new Author() { Id = 1, Name = "Jane Austen" },
        new Author() { Id = 2, Name = "Charles Dickens" },
        new Author() { Id = 3, Name = "Miguel de Cervantes" }
        );

    context.Books.AddOrUpdate(x => x.Id,
        new Book() { Id = 1, Title = "Pride and Prejudice", Year = 1813, AuthorId = 1, 
            Price = 9.99M, Genre = "Comedy of manners" },
        new Book() { Id = 2, Title = "Northanger Abbey", Year = 1817, AuthorId = 1, 
            Price = 12.95M, Genre = "Gothic parody" },
        new Book() { Id = 3, Title = "David Copperfield", Year = 1850, AuthorId = 2, 
            Price = 15, Genre = "Bildungsroman" },
        new Book() { Id = 4, Title = "Don Quixote", Year = 1617, AuthorId = 3, 
            Price = 8.95M, Genre = "Picaresque" }
        );
}

在「套件管理員控制台」視窗中,鍵入以下命令:

Add-Migration Initial
Update-Database

第一個命令會產生建立資料庫的程式碼,而第二個命令則會執行該程式碼。 資料庫是使用 LocalDB 在本機建立的。

Screenshot of the Package Manager Console window with the Enable Migrations, Add Migration Initial, and Update Database lines circled in red.[套件管理員主控台] 視窗的螢幕擷取畫面中,[啟用移轉]、[新增移轉初始] 和 [更新資料庫] 三行被紅色圈起。

探索 API (選擇性)

按 F5 以在偵錯模式中執行應用程式。 Visual Studio 會啟動 IIS Express,並執行您的 Web 應用程式。 Visual Studio 接著會啟動瀏覽器,並開啟應用程式的首頁。

當 Visual Studio 執行 Web 專案時,它會指派通訊埠編號。 在下圖中,通訊埠編號為 50524。 當您執行應用程式時,可能會看到不同的通訊埠編號。

以偵錯模式從 Visual Studio 啟動的應用程式視窗擷圖,其中 A P I 連結以紅色圓圈標記,並搭配紅色箭頭突顯顯示。

首頁是使用 ASP.NET MVC 來實作。 在頁面頂端,有一個連結表示「API」。 此連結會帶您前往 Web API 的自動產生說明頁面。 (若要瞭解如何產生此說明頁面,以及如何將自己的文件新增至頁面,請參閱建立 ASP.NET Web API 說明頁面的指南。) 您可以按下說明頁面連結,以查看 API 的詳細資料,包括請求和回應格式。

自動產生的說明頁面的螢幕擷取畫面,展示了一份 API 功能文件的連結清單。

API 會在資料庫上啟用 CRUD 作業。 下列摘要說明 API。

作者 描述
GET API/作者 取得所有作者。
取得 API/authors/{id} 依據識別碼取得作者資訊。
POST /api/authors 建立新作者。
PUT /api/authors/{id} 更新現有的作者。
刪除 /api/authors/{id} 刪除作者。
書籍 描述
GET /api/books 取得所有書籍。
取得 /api/books/{id} 依識別碼取得書籍。
POST /api/books 建立新書籍。
PUT /api/books/{id} 更新現有書籍。
刪除 /api/books/{id} 刪除書籍。

檢視資料庫 (選擇性)

當您執行 Update-Database 命令時,EF 會建立資料庫並呼叫 Seed 方法。 當你在本機執行應用程式時,EF 會使用 LocalDB。 您可以在 Visual Studio 中檢視資料庫。 從「檢視」功能表選取「SQL Server 物件總管」。

S Q L Server 伺服器物件總管螢幕擷取畫面,其中顯示以藍色醒目提示的 S Q L 伺服器項目,並以黃色醒目提示的 [新增 S Q L 伺服器] 項目。

在 [連接到伺服器] 對話方塊中的 [伺服器名稱] 編輯方塊中,鍵入「(localdb)\v11.0」。 將 驗證 選項保留為 "Windows 驗證"。 按一下 連線

Screenshot of the Connect to Server dialog showing the text local d b v 11 dot 0 in the Server name field and highlighted in blue.[連接到伺服器] 對話方塊的螢幕擷取畫面,其中顯示 [伺服器名稱] 欄位中的文字 local d b v 11 dot 0,並以藍色醒目提示。

Visual Studio 會連線到 LocalDB,並在 [SQL Server 物件總管] 視窗中顯示現有的資料庫。 您可以展開節點,以查看 EF 建立的資料表。

S Q L Server 物件總管的螢幕擷取圖,顯示資料夾階層,其中「Book Service Context」項目以藍色醒目提示。

若要檢視資料,以滑鼠右鍵按一下表格並選取檢視資料

SQL Server 物件總管螢幕擷取畫面,其中顯示以藍色標示的 dbo.Books 項目,以及以黃色標示的 [View Data] 項目。

下列螢幕擷取畫面顯示書籍資料表的結果。 請注意,EF 已將種子資料填入資料庫,並且資料表包含指向 Authors 資料表的外來鍵。

“書籍資料表的螢幕擷取畫面,顯示資料庫填入了種子資料,並且資料表包含外部索引鍵。”