.NET Core 3.1 API 專案使用 Entity Framework Core ( Visual Studio 2019 )

此篇要使用 Entity Framework Core 來操作資料庫

延續上一篇 「建立 ASP.NET Core 3.1 API 專案 ( Visual Studio 2019 )」的專案繼續往下示範

http://greens2314.blogspot.com/2020/09/aspnet-core-3-api.html


本篇共有 8 個步驟

1. 安裝相關的 Nuget 套件

2. 新增模型類別 Model

3. 新增資料內容類別 DbContect

4. 新增資料庫連線

5. 新增資料移轉設定檔 Migration 

6. 更新資料庫

7. 新增 API

8. 執行 API

1. 安裝相關的 Nuget 套件

在專案「相依性」 按右鍵,點選「管理 Nuget 套件」


請安裝以下4個套件

Microsoft.EntityFrameworkCore

Microsoft.EntityFrameworkCore.SqlServer

Microsoft.EntityFrameworkCore.Design

Microsoft.EntityFrameworkCore.Tools


過程中如果出現授權提示,請按「我接受」


2. 新增模型類別 Model

新增「 Models」 資料夾,來存放實體模型

將資料庫的每張「資料表」轉成「 類別」來儲存

後續我們會透過 code first 的方式,將這些類別轉換成資料表

新增「User.cs」實體類別

在「Models」資料夾按滑鼠右鍵,選「加入 / 類別」


請點選「類別」並輸入檔名 Users.cs,按「新增」

User 類別中含有 3 個屬性

分別是 Id、Name 與 Email

本篇使用「資料註解」來宣告屬性的類型

設定字串長度 [StringLength(10)]

是否為主鍵 [Key]

主鍵是否自動增加 [DatabaseGenerated(DatabaseGeneratedOption.Identity)]



3. 新增資料內容類別 DbContect

在「Models」資料夾內新增「DemoContext.cs」並繼承 「DbContext」

新增一個 DbSet 型態的 Users 屬性,表示 User 實體的集合

如果你有多個實體類別,那就需要再這邊宣告多個 DbSet 型態的屬性

有了 DemoContext 後,就可以透過方法,新增或刪除 Users 的內容 


4. 新增資料庫連線

編輯「appsettings.json」

請新增資料庫連線字串

 "ConnectionStrings": {
    "DefaultConnection":"Server=ADMIN\\SQLEXPRESS;Database=Demo;Trusted_Connection=True"
}



編輯「Startup.cs」

在 ConfigureServices 方法中

呼叫 AddDbContext() 方法將剛剛新增好的 DemoContext 注入

並設定使用 SqlServer

資料庫連線字串會去讀取 appsettings.json 中 DefaultConnection 所設定的內容

services.AddDbContext<DemoContext>(options =>
         options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));


5. 新增資料移轉設定檔 Migration 

因為這篇是使用 code first 的方式產生資料庫

而將模型類別轉成資料庫須透過 Migration 

請開啟「套件管理器主控台」

新增 Migration  的指令「 Add-Migration 名稱」

例如下圖,指令是「 add-migration init」

則會產生檔名結尾為 init 的檔案 (會自動產生 「Migrations」 資料夾)

開啟 20200910030934_init.cs 可以查看 Entity Framework Core 如何將差異更新到資料庫

 


6. 更新資料庫

如果要將 Migration 設定更新或套用到資料庫

請執行「Update-Database 某一個現有 Migration 的名稱」

例如下圖,指令是 「update-database init」

指令執行完成之後,可以開啟資料庫檢查更新是否正確

如下圖所示

我的資料庫自動新增了一個名稱為「Demo」的資料庫

且包含一個名稱為「Users」的資料表與「__EFMigrationsHistory」資料表

成功執行的 Migration 都會記錄在「__EFMigrationsHistory」資料表中




若後續資料表有任何更新

請記得步驟是:修改模型類別 > 新增 Migration > 新更資料庫

雖然步驟很繁瑣,但習慣就好了XD

優點是每次的資料表變更都可以加入版控,十分的方便哦!


7. 新增 API

接下來我們要使用 Scaffold 來建立程式碼

請在「Controllers」資料夾按右鍵,選「加入 > 控制器」


請選擇「使用 Entity Framework 執行動作的 API 控制器」,按「加入」


請選擇要使用的模型類別 User、資料內容類別 DemoContext 與輸入控制器名稱 UserController


UserController.cs 就會自動產生囉!


8. 執行 API

實際來 run 一下

請按 F5 或是在工具列 > 偵錯 > 開始偵錯

把網站執行起來

使用 postman 來測試 API

新增一筆資料 POST api/Users 


取得所有資料 GET api/Users 






留言

這個網誌中的熱門文章

CPE 一顆星選集題目說明與解答 - Java 筆記與心得分享

Visual Studio 自動排版格式化程式碼

1. Vito's family (CPE10406, UVA10041) - CPE一顆星解答與說明