前言
前面兩篇文 安裝 Entity Framework Core、使用 EF Core Power Tool 分享了在 .NET Core 如何使用 EF Core 產生已存在 DB Table 模型物件,仔細回想一下分享內容過於片段可能無法讓人抓到重點,因此決定再寫一篇分享 EF Core DB First 在 .NET Core 中操作與設定,此篇文章包含新增下列項目
新增專案
首先先建立一個 .Net Core Web API 專案測試作為範例,開啟 Visual Studio 2017 新增專案,選擇 .NET Core 與 ASP.NET Core Application,輸入專案名稱按下確定
接著類型選擇 API,這邊用不到 Docker support 可以取消勾選
建立 DB Table 物件
由於是範例程式,因此這步驟主要是再進行測試資料庫 Table 的新增動作方便後續 Demo,在自己 local 北風資料庫新增一個 Member Table,其中包含 ID、Name、Password 三個欄位 (由於是簡單的測試範例 Sample 所以密碼先不加密,壞榜樣 ! ),以下為產生 Member Table 的 script 內容
建立 DBContext
這步驟是要在 .NET Core API 專案建立 DBContext 與 Table 物件模型,在 Package Manager Console 輸入以下指令建立資料庫模型
資料夾底下有 NorthwindContext 及 member 類別,開啟 Member 內容與 DB 內的相同
補充
指令細節由於之前有寫文詳細介紹過,因此這裡就不在多加介紹,也可以透過工具產生可以參考下列連結
透過以上步驟,就完成了上面 EF Core 建立 DBContext 及指定 Table Member 的內容。
建立連線
在 .NET Core 專案 DBContext 連線設定是在 Start.cs 的 ConfigureServices 位置,註冊方式如下
新增 Controller
新增 Member Controller,在 Controllers 資料夾按右鍵 > Add > 選擇 controller
接著可以選擇要新增的 Controller 類型,選擇最後一項 using Entity Framework controller
新增 EF Controller 需要知道 DBContext 與類別,因此此步驟是要指定 Data context 與 Model 類別物件,這裡可以透過下拉選單選擇剛剛新增的 NorthwindContext 與 Member model 物件,以及輸入Controller 名字
按下 add 後會產生 controller,產生代碼會在建構子注入指定 context 物件,以及針對 Member 新增刪改的async 非同步方法
測試
在 MSDN 介紹是透過 Postman 來進行測試,但我個人推薦是使用 swagger 測試更為方便,在操作介面上更為簡單不用一直在不同的 tab 進行切換,swagger 在 .NET Core 的安裝不是這篇的重點,想瞭解可以參考 MSDN 說明 : 傳送門,安裝完畢後打開 Swagger 可以看到下列畫面
可以清楚的看到目前 Member 所產生的 API 清單以及對應的 Http Method 方法,接下來為了測試方便我在 Member Table 中新增四筆資料,方便進行測試及驗證的動作
接著在使用 swagger 執行 Member 的 Get 方法取得 Member 所有資料回傳
取得所有 Member 方法筆數相同,驗證無誤,接下來繼續驗證其他方法是否正常,直接透過 gif 來確認驗證其他方法結果
GET - 透過 id 查詢
輸入 ID 取得指定 Member 內容
POST - 新增
PUT - 修改
修改特定資料,在透過查詢方法確認是否有修改成功
DELETE - 刪除
刪除 member id 為 5 的資料,在透過查詢確認是否刪除成功
方法均沒問題,宣告 EF Core 初體驗成功 !!!!
參考
Getting Started with EF Core on ASP.NET Core with an Existing Database
前面兩篇文 安裝 Entity Framework Core、使用 EF Core Power Tool 分享了在 .NET Core 如何使用 EF Core 產生已存在 DB Table 模型物件,仔細回想一下分享內容過於片段可能無法讓人抓到重點,因此決定再寫一篇分享 EF Core DB First 在 .NET Core 中操作與設定,此篇文章包含新增下列項目
- 範例 .NET Core 專案
- 建立 DB Table 物件
- EF Core DB 連線設定
- 新增 Controller : CRUD 代碼
- 測試 API
首先先建立一個 .Net Core Web API 專案測試作為範例,開啟 Visual Studio 2017 新增專案,選擇 .NET Core 與 ASP.NET Core Application,輸入專案名稱按下確定
接著類型選擇 API,這邊用不到 Docker support 可以取消勾選
建立 DB Table 物件
由於是範例程式,因此這步驟主要是再進行測試資料庫 Table 的新增動作方便後續 Demo,在自己 local 北風資料庫新增一個 Member Table,其中包含 ID、Name、Password 三個欄位 (由於是簡單的測試範例 Sample 所以密碼先不加密,壞榜樣 ! ),以下為產生 Member Table 的 script 內容
USE [Northwind]
GO
/****** Object: Table [dbo].[Member] Script Date: 2019/4/4 上午 11:56:43 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Member] (
[Id] INT NOT NULL,
[Name] NVARCHAR (50) NOT NULL,
[password] NVARCHAR (10) NOT NULL
);
執行完就會在北風資料庫產生 Member Table 物件,透過 Visual Studio 2017 內建的 SQL Server Object Explore 檢視如下建立 DBContext
這步驟是要在 .NET Core API 專案建立 DBContext 與 Table 物件模型,在 Package Manager Console 輸入以下指令建立資料庫模型
Scaffold-DbContext "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Northwind;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -table member輸出成功的話,會在專案自動建立 Models 資料夾
資料夾底下有 NorthwindContext 及 member 類別,開啟 Member 內容與 DB 內的相同
namespace EFCoreApplication.Models
{
public partial class Member
{
public int Id { get; set; }
public string Name { get; set; }
public string Password { get; set; }
}
}
補充
指令細節由於之前有寫文詳細介紹過,因此這裡就不在多加介紹,也可以透過工具產生可以參考下列連結
- 使用指令 : [.NETCore] 安裝 Entity Framework Core
- 使用工具 : [.NETCore] 安裝 Entity Framework Core - 使用 EF Core Power Tool
建立連線
在 .NET Core 專案 DBContext 連線設定是在 Start.cs 的 ConfigureServices 位置,註冊方式如下
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
var connection =
@"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Northwind;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";
services.AddDbContext<NorthwindContext>(options => options.UseSqlServer(connection));
}
說明如下
- 定義連線字串 connection (也可以將連線字串設定在 appsettings.json 檔案中)
- 使用 service.AddContext 註冊 DBContext 物件,範例中就是稍早新增的 NorthwindContext 物件,option 則是指定需要連到的資料庫類型,範例是使用因此就是 sqlserver 並設定其連線字串
新增 Controller
新增 Member Controller,在 Controllers 資料夾按右鍵 > Add > 選擇 controller
接著可以選擇要新增的 Controller 類型,選擇最後一項 using Entity Framework controller
新增 EF Controller 需要知道 DBContext 與類別,因此此步驟是要指定 Data context 與 Model 類別物件,這裡可以透過下拉選單選擇剛剛新增的 NorthwindContext 與 Member model 物件,以及輸入Controller 名字
按下 add 後會產生 controller,產生代碼會在建構子注入指定 context 物件,以及針對 Member 新增刪改的async 非同步方法
測試
在 MSDN 介紹是透過 Postman 來進行測試,但我個人推薦是使用 swagger 測試更為方便,在操作介面上更為簡單不用一直在不同的 tab 進行切換,swagger 在 .NET Core 的安裝不是這篇的重點,想瞭解可以參考 MSDN 說明 : 傳送門,安裝完畢後打開 Swagger 可以看到下列畫面
可以清楚的看到目前 Member 所產生的 API 清單以及對應的 Http Method 方法,接下來為了測試方便我在 Member Table 中新增四筆資料,方便進行測試及驗證的動作
接著在使用 swagger 執行 Member 的 Get 方法取得 Member 所有資料回傳
取得所有 Member 方法筆數相同,驗證無誤,接下來繼續驗證其他方法是否正常,直接透過 gif 來確認驗證其他方法結果
GET - 透過 id 查詢
輸入 ID 取得指定 Member 內容
POST - 新增
PUT - 修改
修改特定資料,在透過查詢方法確認是否有修改成功
DELETE - 刪除
刪除 member id 為 5 的資料,在透過查詢確認是否刪除成功
方法均沒問題,宣告 EF Core 初體驗成功 !!!!
參考
Getting Started with EF Core on ASP.NET Core with an Existing Database




























