EF core 從 DB 產生 Models(反向工程)
23 Mar 2020安裝 EF 工具
dotnet tool install dotnet-ef -g
將 Microsoft.EntityFrameworkCore.Design 加入至專案
5.0.0
目前是 preview 版本, 這邊安裝 3.1.2
dotnet add package Microsoft.EntityFrameworkCore.Design --version 3.1.2
從 DB 產生 Models
根據不同的 DB 安裝不同的 Provider, 例如: Microsoft.EntityFrameworkCore.SqlServer
.
dotnet ef dbcontext scaffold "Server=(localdb)\MSSQLLocalDB;Database=ContosoUniversity;Trusted_Connection=True" Microsoft.EntityFrameworkCore.SqlServer -o Models -f -c SqlDbContext
此指令會使用 Microsoft.EntityFrameworkCore.SqlServer
將 Model 輸出在 Models
資料夾, 並把 DbContext 命名為 SqlDbContext
.
使用 Nuget 套件管理員可以使用以下指令
Scaffold-DbContext "Server=(localdb)\MSSQLLocalDB;Database=ContosoUniversity;Trusted_Connection=True" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -f -c SqlDbContext
Providers
以下是目前在專案使用過的 Providers
DB | Provider | |
---|---|---|
MSSQL | Microsoft.EntityFrameworkCore.SqlServer | Link |
PostgreSQL | Npgsql.EntityFrameworkCore.PostgreSQL | Link |
使用 “user-secrets” 儲存連線字串
首先先初始化 user-secrets
dotnet user-secrets init
再將連線字串儲存至 user-secrets
dotnet user-secrets set ConnectionStrings.DefaultConnection "Server=(localdb)\MSSQLLocalDB;Database=ContosoUniversity;Trusted_Connection=True"
最後將連線字串修改成 Name=DefaultConnection
dotnet ef dbcontext scaffold Name=DefaultConnection Microsoft.EntityFrameworkCore.SqlServer
在 Console 中使用 DbContext
var option = new DbContextOptionsBuilder<SqlTaikooContext>().UseSqlServer(connectionString).Options;
var context = new SqlDbContext(option);
參考資料: https://docs.microsoft.com/zh-tw/ef/core/managing-schemas/scaffolding
tags: [