於 .net core 使用 EF Core 技術讀取資料庫
以下示範使用 EF Core 技術讀取資料庫
一、資料準備
1 | -- create table |
二、開一個 .net core ConsoleApp 專案
三、於 NuGet 安裝相關套件,指令如下
請於 Package Manager Console 依序執行以下指令
安裝 Microsoft.Extensions.Configuration.Json 套件,之後範例會用到(非必要)
1
$ Install-Package Microsoft.Extensions.Configuration.Json
首先要先安裝 dotnet ef 的全域工具,才能使用 dotnet ef 的指令
1
$ dotnet tool install --global dotnet-ef
添加 Microsoft.EntityFrameworkCore.SqlServer nuget 套件
注意,要到該專案資料夾路徑下安裝。1
$ dotnet add package Microsoft.EntityFrameworkCore.SqlServer
(資料庫的Provider,用來與相對性的資料庫溝通)
如果是 MySql 的話,則使用下列指令
1 | $ dotnet add package Pomelo.EntityFrameworkCore.MySql |
添加 Microsoft.EntityFrameworkCore.Design nuget 套件
1
$ dotnet add package Microsoft.EntityFrameworkCore.Design
(沒有安裝無法透過cli 使用資料庫產生實體)
先行添加空的 Program.cs,並成功編譯過,以利下一步驟進行
1
2
3
4
5
6
7class Program
{
static void Main(string[] args)
{
}
}之後要透過以下指令來透過資料庫產生實體
1
$ dotnet ef dbcontext scaffold "server=USER\SQLEXPRESS;Database=myDB;Trusted_Connection=False;MultipleActiveResultSets=true;Encrypt=False;User ID=sa;Password=pw" "Microsoft.EntityFrameworkCore.SqlServer" -o ./Models -c SchoolContext -f
如果是 MySql 的話,則使用下列指令
1
$ dotnet ef dbcontext scaffold "server=localhost;Port=3306;Database=myDB;User ID=root;Password=pw" "Pomelo.EntityFrameworkCore.MySql" -o ./Models -c SchoolContext -f
四、於 SchoolContext.cs 移除敏感連線參數
找到下面方法,移除他。或是在上面指令 build 實體的時候,加上 --no-onconfiguring 參數,不要產生 OnConfiguring 方法
1 | protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) |
而連線參數改用 appsettings.json 來取得
而連線參數的 appsettings.json 設定檔內容大致如下
1 | { |
五、於 Program.cs 改成下面程式碼
1 | using ConsoleApp1.Models; |
參考資料:
[Day05] Entity Framework Core與DB First - 我與 ASP.NET Core 3 的 30天
.NET Core第10天_搭配EF Core串聯資料庫Db First_使用EntityFramework執行檢視的MVC控制器
Entity Framework Core tools reference - .NET Core CLI