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 [![NuGet](https://img.shields.io/nuget/v/JD.Efcpt.Build.svg)](https://www.nuget.org/packages/JD.Efcpt.Build/) [![License](https://img.shields.io/github/license/jerrettdavis/JD.Efcpt.Build.svg)](LICENSE) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/499125ebfa073159.svg)](https://github.com/JerrettDavis/JD.Efcpt.Build/actions/workflows/ci.yml) [![CodeQL](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/d9d8bee937073200.svg)](https://github.com/JerrettDavis/JD.Efcpt.Build/security/code-scanning) [![codecov](https://codecov.io/gh/JerrettDavis/JD.Efcpt.Build/branch/main/graph/badge.svg)](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结果处理, 代码生成器, 反向工程, 增量构建, 多人体追踪, 开发工具, 数据库优先, 数据集, 构建自动化, 模型生成, 自动化构建