JerrettDavis/JD.Efcpt.Build
GitHub: JerrettDavis/JD.Efcpt.Build
一款将 EF Core Power Tools 集成到 MSBuild 的自动化工具,在构建时自动生成 Database-First 的 EF Core 模型。
Stars: 11 | Forks: 0
# JD.Efcpt.Build
[](https://www.nuget.org/packages/JD.Efcpt.Build/)
[](LICENSE)
[](https://github.com/JerrettDavis/JD.Efcpt.Build/actions/workflows/ci.yml)
[](https://github.com/JerrettDavis/JD.Efcpt.Build/security/code-scanning)
[](https://codecov.io/gh/JerrettDavis/JD.Efcpt.Build)
**EF Core Power Tools CLI 的 MSBuild 集成**
在 `dotnet build` 期间自动生成 Database-First 的 EF Core 模型。零手动步骤,完整的 CI/CD 支持,构建可复现。
## 快速开始
### 选项 A:项目模板(最简单)
```
dotnet new install JD.Efcpt.Build.Templates
dotnet new efcptbuild --name MyDataProject
dotnet build
```
### 选项 B:SDK 方式(推荐)
```
net8.0
```
### 选项 C:PackageReference
```
dotnet add package JD.Efcpt.Build
dotnet build
```
## 可用包
| Package | Purpose | Usage |
|---------|---------|-------|
| [JD.Efcpt.Build](https://www.nuget.org/packages/JD.Efcpt.Build/) | MSBuild 集成 | 作为 `PackageReference` 添加 |
| [JD.Efcpt.Sdk](https://www.nuget.org/packages/JD.Efcpt.Sdk/) | SDK 包(最简洁的设置) | 作为项目 SDK 使用 |
| [JD.Efcpt.Build.Templates](https://www.nuget.org/packages/JD.Efcpt.Build.Templates/) | 项目模板 | `dotnet new install` |
## 主要特性
- **自动生成** - 在 `dotnet build` 期间生成 DbContext 和实体
- **增量构建** - 仅在 schema 或配置更改时重新生成
- **Database-First SqlProj 生成** - 从实时数据库提取 schema 到 DACPAC(新功能!)
- **双重输入模式** - 支持 SQL 项目或实时数据库连接
- **智能发现** - 自动查找数据库项目和配置文件
- **T4 模板支持** - 使用自定义模板定制代码生成
- **多 Schema 支持** - 跨多个数据库 Schema 生成模型
- **CI/CD 就绪** - 可在 .NET 运行的任何地方工作(GitHub Actions, Azure DevOps, Docker)
- **跨平台 SQL 项目** - 支持 Microsoft.Build.Sql 和 MSBuild.Sdk.SqlProj
## 文档
| Topic | Description |
|-------|-------------|
| [入门指南](docs/user-guide/getting-started.md) | 安装和首个项目设置 |
| [使用 SDK](docs/user-guide/sdk.md) | 实现最简洁项目文件的 SDK 方式 |
| [配置](docs/user-guide/configuration.md) | MSBuild 属性和 JSON 配置选项 |
| [连接字符串模式](docs/user-guide/connection-string-mode.md) | 从实时数据库生成 |
| [T4 模板](docs/user-guide/t4-templates.md) | 自定义代码生成 |
| [CI/CD 集成](docs/user-guide/ci-cd.md) | GitHub Actions, Azure DevOps, Docker |
| [故障排除](docs/user-guide/troubleshooting.md) | 常见问题及解决方案 |
| [API 参考](docs/user-guide/api-reference.md) | 完整的 MSBuild 属性和任务 |
| [核心概念](docs/user-guide/core-concepts.md) | 构建流水线的工作原理 |
| [架构](docs/architecture/README.md) | 内部架构详情 |
## 系统要求
- **.NET SDK 8.0+**
- **EF Core Power Tools CLI** - 在 .NET 10+ 上通过 `dnx` 自动执行;在 .NET 8-9 上需手动安装
- **数据库源** - SQL Server Database Project (.sqlproj) 或实时数据库连接
### 支持的 SQL 项目类型
| Type | Extension | Cross-Platform |
|------|-----------|----------------|
| [Microsoft.Build.Sql](https://github.com/microsoft/DacFx) | `.sqlproj` | 是 |
| [MSBuild.Sdk.SqlProj](https://github.com/rr-wfm/MSBuild.Sdk.SqlProj) | `.csproj` / `.fsproj` | 是 |
| 传统 SQL 项目 | `.sqlproj` | 仅限 Windows |
## 新功能:Database-First SQL 生成
当 JD.Efcpt.Build 检测到 SQL 项目中的引用时,自动从实时数据库生成 SQL 脚本:
**DatabaseProject** (SQL):
```
Server=...;Database=MyDb;...
```
**DataAccessProject** (EF Core):
```
```
这将启用完整的双项目工作流:
```
Live Database → SQL Scripts (in SQL Project) → DACPAC → EF Core Models (in DataAccess Project)
```
**优势:**
- ✅ 自动 SQL 项目检测(无需配置)
- ✅ 数据库作为事实来源
- ✅ 人类可读的 SQL 脚本,便于审查和版本控制
- ✅ 清晰的分离:数据库项目 + DataAccess 项目
- ✅ 通过 schema 指纹识别实现增量构建
- ✅ 支持 .NET 10+ `dnx`(无需安装 sqlpackage)
请参阅 [Database-First SQL 生成示例](samples/database-first-sql-generation/) 以获取完整示例。
## 示例
请参阅 [samples 目录](samples/) 以获取完整的工作示例:
- [简单生成](samples/simple-generation/) - 基本的 DACPAC 生成
- [SDK 零配置](samples/sdk-zero-config/) - 最简化的 SDK 项目设置
- [Database-First SQL 生成](samples/database-first-sql-generation/) - 从实时数据库自动生成 SQL 脚本(新功能!)
- [连接字符串模式](samples/connection-string-sqlite/) - 从实时数据库生成
- [自定义重命名](samples/custom-renaming/) - 表和列重命名
- [Schema 组织](samples/schema-organization/) - 多 Schema 文件夹结构
- [拆分输出](samples/split-data-and-models-between-multiple-projects/) - 分离 Models 和 Data 项目
## 贡献
欢迎贡献!请先开 issue 讨论更改。有关准则,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 许可证
本项目采用 MIT 许可证授权。有关详细信息,请参阅 [LICENSE](LICENSE)。
## 致谢
- **[EF Core Power Tools](https://github.com/ErikEJ/EFCorePowerTools)** 由 Erik Ejlskov Jensen 开发 - 本包自动化的工具
- **Microsoft** - 提供 Entity Framework Core 和 MSBuild
## 支持
- [GitHub Issues](https://github.com/jerrettdavis/JD.Efcpt.Build/issues) - Bug 报告和功能请求
- [GitHub Discussions](https://github.com/jerrettdavis/JD.Efcpt.Build/discussions) - 问题和社区支持
标签:DbContext, EF Core, EF Core Power Tools, Entity Framework Core, LNA, macOS, Model Generation, MSBuild, NuGet, SOC Prime, SQL Server, Waymore结果处理, 代码生成器, 反向工程, 增量构建, 多人体追踪, 开发工具, 数据库优先, 数据集, 构建自动化, 模型生成, 自动化构建