sjh37/EntityFramework-Reverse-POCO-Code-First-Generator

GitHub: sjh37/EntityFramework-Reverse-POCO-Code-First-Generator

从现有数据库逆向工程生成 Entity Framework Code First 的 POCO 类、DbContext 和映射配置的高可定制代码生成器。

Stars: 712 | Forks: 224

## EntityFramework Reverse POCO Code First 生成器 该生成器生成的代码就像是由专家对您的数据库进行逆向工程并为您编写的代码一样。完美无缺。 对现有数据库进行逆向工程,并生成 Entity Framework Code First Poco 类、Configuration 映射、Enumerations、DbContext、FakeDbContext(用于简单的单元测试)以及调用存储过程和表值函数。 **生成精美且完全可自定义的 Code First 代码** * 可从 [visual studio gallery](https://marketplace.visualstudio.com/items?itemName=SimonHughes.EntityFrameworkReversePOCOGenerator) 下载 VSIX 安装程序。 * 在 [pluralsight](https://app.pluralsight.com/library/courses/code-first-entity-framework-legacy-databases/table-of-contents) 观看 v2 深度课程 ![logo](http://www.simonhughes.co.uk/pluralsight-logo-tiny.png) 我涵盖了 v2 生成器可以做的所有事情,并逐步向您展示如何正确地对数据库进行逆向工程。 请注意,这不是 Microsoft 的反向生成器。该生成器生成的代码就像您对数据库进行了逆向工程并充满爱意地手工编写了代码一样。它还允许您根据自己的喜好自定义生成的代码。 ### 观看短视频片段(无音频) [![观看视频](https://reversepocostorage.blob.core.windows.net/public-file-share/efcore-first-run.jpg)](https://reversepocostorage.blob.core.windows.net/public-file-share/efcore-first-run.mp4) ## 要移除试用限制,您需要许可证密钥。 对学术界免费(您需要一个 .edu、.ac 或 .sch 邮箱地址),商业用途不免费。 前往 [ReversePOCO](https://www.reversepoco.co.uk) 网站获取您的许可证密钥。 ### 将 v2 升级到 v3 请阅读 [升级文档](https://github.com/sjh37/EntityFramework-Reverse-POCO-Code-First-Generator/wiki/Upgrading-from-v2-to-v3) ### 新增功能 [点击此处](https://github.com/sjh37/EntityFramework-Reverse-POCO-Code-First-Generator/releases) 查看此版本的新增功能。 ### 支持的数据库 * SQL Server * SQL Server Compact 3.5 和 4.0 * PostgreSQL * 即将推出:Oracle, MySQL ### 高度可定制的输出 该生成器从一开始就被设计为可自定义的,不像其他生成器那样固定和僵化。 请在 `.tt` 文件中调整设置。这正是它的用途所在。 如果您的数据库发生更改,只需重新保存 `.tt` 文件即可。就这样。 [点击此处](https://github.com/sjh37/efreversepoco/wiki/Full-control-over-the-generated-code) 查看完整的功能列表。 ### 安装并使用此项目: * 使用 Nuget 并为您的数据库安装相关的 NuGet 包。 - .Net Core: `install-package Microsoft.EntityFrameworkCore.SqlServer` - EF 6: `install-package EntityFramework` * v3 版本中 `Settings.ConnectionString` 是必填项,因此您需要提供来自 app.config/web.config/appsettings.json 文件的连接字符串。生成器使用此连接字符串对您的数据库进行逆向工程。它不再从 *.config 文件中读取您的连接字符串。 例如: Settings.ConnectionString = "Data Source=(local);Initial Catalog=Northwind;Integrated Security=True;Encrypt=false;TrustServerCertificate=true"; * 您使用的 `Settings.ConnectionString` 字符串必须至少具有以下权限:`ddladmin`、`datareader` 和 `datawriter`。读取默认约束需要 `ddladmin` 权限。 * 在 Visual Studio 中,右键单击项目并选择“添加 - 新建项”。 * 选择“联机”,然后搜索 **reverse poco**。 * 选择 **EntityFramework Reverse POCO Generator**。 * 为文件命名,例如 `Database.tt`,然后单击添加。 * 编辑 `Database.tt` 文件,并在 `Settings.ConnectionString` 中指定完整的连接字符串。生成器使用此连接来读取您的数据库架构并对其进行逆向工程。 * 编辑 `Database.tt` 文件,并在 `Settings.ConnectionStringName` 中指定连接字符串,该字符串必须与 `appsettings.json`、`app.config` 或 `web.config` 中指定的 ConnectionString 键匹配。 * 保存 `Database.tt` 文件,它现在将生成 `Database.cs` 文件。每次保存 `Database.tt` 文件时,生成器都会对您的数据库进行逆向工程。 * 您可以使用许多选项来自定义生成的代码。所有这些设置都在 `Database.tt` 文件中。 ### 连接字符串 `Settings.ConnectionString` 在版本 3 中是必填的。生成器使用它来读取您的数据库架构。该连接字符串可选择性地放入 OnConfiguring 函数中: ``` protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){{#newline}} {{{#newline}} if (!optionsBuilder.IsConfigured){{#newline}} {{{#newline}} optionsBuilder.UseSqlServer(@""{{ConnectionString}}"");{{#newline}} }{{#newline}} }{{#newline}}{{#newline}} ``` `Settings.ConnectionStringName` 生成器不使用此项,但会通过调用 `Settings.DefaultConstructorArgument` 将其放入生成的 DbContext 构造函数中。 ``` public {{DbContextName}}(){{#newline}} {{#if HasDefaultConstructorArgument}} : base({{DefaultConstructorArgument}}){{#newline}} {{/if}} ``` ### UI 该生成器的简单 UI 可在以下位置找到 [GitHub](https://github.com/sjh37/EntityFramework-Reverse-POCO-Generator-UI),它帮助您创建正则表达式来过滤您的表。 ### 编辑 TT (T4) 文件 为了在编辑 TT 文件时获得完整的语法高亮和智能感知,我使用了 Resharper 插件 ForTea。我无法想象没有它如何编辑 TT 文件。 无需直接编辑 `EF.Reverse.POCO.v3.ttinclude` 文件,因为该文件是由 C# 项目生成的。此仓库包含 BuildTT 文件,该文件从 `Generator` C# 项目创建 `EF.Reverse.POCO.v3.ttinclude`。 ### 让 Pull Request 被接受 请阅读 [https://github.com/blog/1943-how-to-write-the-perfect-pull-request](How to write the perfect pull request) 我的要求很简单: 1. 始终将更改保持在**最低限度**,以便我可以**确切**地看到关于 pull request 的更改内容。即:不要清理空格等。 2. 不要使用制表符,只能使用空格(4)。 3. 编辑 Generator C# 项目。运行此项目将创建 `EF.Reverse.POCO.v3.ttinclude` 文件。此仓库包含 `BuildTT` 项目,该项目从 `Generator` C# 项目创建 `EF.Reverse.POCO.v3.ttinclude`。 4. 不要试图在一个 pull request 中做多个不同的改进。**一个** pull request 只用于**一个** 错误修复/改进。 致敬, Simon Hughes * E: [simon@reversepoco.co.uk](mailto:simon@reversepoco.co.uk) * W: [about.me/simon.hughes](http://about.me/simon.hughes) * B: [simon-hughes.blogspot.co.uk](http://simon-hughes.blogspot.co.uk)
标签:Code First, DbContext, Entity Framework, ORM, POCO, SQL Server, Visual Studio, VSIX 扩展, 云资产清单, 代码生成器, 单元测试, 多人体追踪, 存储过程, 实体类生成, 数据库优先, 数据库映射, 数据访问层, 测试用例, 自动生成代码, 软件授权, 逆向工程