efdbfirst代码生成
你已经非常清楚地规划了 README.md 的结构和内容,以下是我根据你的要求整理并美化后的版本,保持原始版本号不变,使用层级标题、代码块、分隔线,并加入适当的 emoji 图标提升可读性:
📦 EF Core 生成与 Scaffold 操作说明
⚙️ 环境与工具版本(请尽量保持一致)
安装 dotnet-ef 工具:
1
dotnet tool install --global dotnet-ef --version 7.0.14
在 EFCORE 专案中需安装的 NuGet 套件:
1
2
3dotnet add package Microsoft.EntityFrameworkCore --version 7.0.2
dotnet add package Microsoft.EntityFrameworkCore.Design --version 7.0.3
dotnet add package Microsoft.EntityFrameworkCore.Tools --version 7.0.3
🧩 安装自订模板(7.0 以上才支持)
获取 EF Core 7.0 的 T4 模板,注意版本号需与工具一致,否则可能导致语法问题。
1 | dotnet new install Microsoft.EntityFrameworkCore.Templates::7.0.3 |
📌 T4 文件中可查到:
1 | if (!ProductInfo.GetVersion().StartsWith("10.0")) |
⚠️ 注意:冒号分隔符
::已弃用,建议使用@作为版本分隔符,例如:
1 | dotnet new install Microsoft.EntityFrameworkCore.Templates@7.0.3 |
安装过程输出示例:
1 | 已安装 Microsoft.EntityFrameworkCore.Templates (版本 10.0.0),它将替换为版本 7.0.3。 |
✅ 默认安装最新版本:
1 | dotnet new install Microsoft.EntityFrameworkCore.Templates |
📁 在 EFCORE 专案目录 Innolux.EFCore 中执行:
1 | dotnet new ef-templates --force |
🏗️ 以 Scaffold 产生 DbContext 与 Model
📂 进入项目目录 Innolux.EFCore,执行以下命令:
1 | dotnet ef dbcontext scaffold "server=10.0.16.60;Port=3306;uid=root;pwd=root;database=DCS_NET;AllowPublicKeyRetrieval=True;Allow Zero Datetime=True;CharSet=utf8mb4;SslMode=none;AllowLoadLocalInfile=true;" MySql.EntityFrameworkCore --context DcsMysqlContext --context-dir Model/NET/EF --namespace Innolux.EFCore.EF.Model.Dcs --context-namespace Innolux.EFCore.EF --output-dir Model/NET/EF/Model --no-onconfiguring --force |
📁 目录与命名说明
--context DcsMysqlContext
→ 产生的 DbContext 名称为 DcsMysqlContext--context-dir Model/NET/EF
→ DbContext 文件位置为 Model/NET/EF--namespace Innolux.EFCore.EF.Model.Dcs
→ Model 类命名空间为 Innolux.EFCore.EF.Model.Dcs--context-namespace Innolux.EFCore.EF
→ DbContext 命名空间为 Innolux.EFCore.EF--output-dir Model/NET/EF/Model
→ 实体 Model 类输出至 Model/NET/EF/Model--no-onconfiguring
→ 不自动生成OnConfiguring方法(建议使用 DI 注入)--force
→ 覆写已存在的文件
📝 小提示
- ✅ 请确保当前目录为
Innolux.EFCore项目根目录。 - 🔄 若需切换数据库或环境,请修改连接字符串后重新执行 scaffold。
- 🛠️ 若需自定义模板行为,可修改 ef-templates 内容后使用
--force重新生成。
原文:
考虑如何编写README.md
我需要创建一个符合开发者规则的文件,使用层级化的标题,内容要简洁清晰,版本不变。虽然“8.0 2”可能是个小错误,但用户要求不要更改版本号,因此我会保留它。命令部分要用代码块,确保没有额外的评论。每个步骤都要列出,包括项目目录“Innolux.EFCore”。我会保持结构清晰,确保每个步骤明确。
EF Core 生成与 Scaffold 操作说明
环境与工具版本(请尽量保持一致)
- dotnet-ef 工具
1
2
3
dotnet tool install --global dotnet-ef --version 7.0.14
- 在 EFCORE 专案中需安装的 NuGet 套件
dotnet add package Microsoft.EntityFrameworkCore –version 7.0.2
dotnet add package Microsoft.EntityFrameworkCore.Design –version 7.0.3
dotnet add package Microsoft.EntityFrameworkCore.Tools –version 7.0.3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
---
## 安裝自訂模板 7.0以上才支持
获取 EF Core 7.0 的 T4 模板,注意版本号与上面工具也要一致,不然可能导致生成的 语法问题
dotnet new install Microsoft.EntityFrameworkCore.Templates::7.0.3
dotnet new ef-templates --force
t4文件中可查到 if (!ProductInfo.GetVersion().StartsWith("10.0")) 这个版本号是10
```bash
dotnet new install Microsoft.EntityFrameworkCore.Templates::7.0.3
已弃用冒号分隔符 "::",以支持在 dotnet 新安装中使用符号 “@” 分隔程序包和版本。在你的案例中,这意味着使用 Microsoft.EntityFrameworkCore.Templates@7.0.3 而不是 Microsoft.EntityFrameworkCore.Templates::7.0.3。
将安装以下模板包:
Microsoft.EntityFrameworkCore.Templates::7.0.3
已安装 Microsoft.EntityFrameworkCore.Templates (版本 10.0.0),它将替换为 版本 7.0.3。
已成功卸载 Microsoft.EntityFrameworkCore.Templates::10.0.0。
成功: Microsoft.EntityFrameworkCore.Templates::7.0.3 已安装以下模板:
模板名 短名称 语言 标记
------------------------------------------- ------------ ---- ------------------
Entity Framework Core Scaffolding Templates ef-templates [C#] EFCore/Scaffolding
以下会默认最新版本。。。。。。
- 安裝 EF Core 自訂模板
1
2
3
dotnet new install Microsoft.EntityFrameworkCore.Templates
- 在 EFCORE 專案中(專案目錄為 Innolux.EFCore)產生模板
1
2
3
4
5
# 於 Innolux.EFCore 專案根目錄執行
dotnet new ef-templates --force
以 Scaffold 產生 DbContext 與 Model
- 進入 EFCORE 專案目錄 Innolux.EFCore,執行以下命令(請在專案根目錄執行):
1
2
3
dotnet ef dbcontext scaffold "server=10.0.16.60;Port=3306;uid=root;pwd=root;database=DCS_NET;AllowPublicKeyRetrieval=True;Allow Zero Datetime=True;CharSet=utf8mb4;SslMode=none;AllowLoadLocalInfile=true;" MySql.EntityFrameworkCore --context DcsMysqlContext --context-dir Model/NET/EF --namespace Innolux.EFCore.EF.Model.Dcs --context-namespace Innolux.EFCore.EF --output-dir Model/NET/EF/Model --no-onconfiguring --force
目錄與命名說明
- –context DcsMysqlContext
- 產生的 DbContext 名稱為 DcsMysqlContext
- –context-dir Model/NET/EF
- DbContext 檔案會放在 Model/NET/EF
- –namespace Innolux.EFCore.EF
- 產生的類別命名空間為 Innolux.EFCore.EF
- –context-namespace Innolux.EFCore.EF
- DbContext 的命名空間為 Innolux.EFCore.EF
- –output-dir Model/NET/EF/Model
- 實體 Model 類別輸出到 Model/NET/EF/Model
- –no-onconfiguring
- 不會在 DbContext 中自動產生 OnConfiguring 方法(建議透過 DI 與設定檔注入連線)
- –force
- 覆寫既有檔案
小提示
確認執行命令時當前工作目錄為 Innolux.EFCore 專案根目錄。
若需要不同連線或環境,請在連線字串調整後再執行 scaffold。
若需自訂 template 或 scaffold 行為,可先修改或檢視安裝的 ef-templates 內容,再使用
--force覆寫產出。

