.NET 6 中的DbFirst 反向工程

发布时间 2024-01-06 15:21:43作者: 清和时光

前言:虽然CodeFirst显得比较高大上档次,但是DbFirst 反向工程更适用于实际开发,毕竟操作起来简单粗暴效率非常高。

下面讲一下具体使用:

  1. 先在数据库中建立好数据库以及数据表,比如我建立一个数据库命名为 TestDb,数据表为 Employee
  2. 打开Visual Studio,并打开程序包管理器控制台,如果没有,可以在菜单栏的 工具--
    NuGet包管理器--程序包管理器控制台 打开
  3. 接下来就是直接上命令了,也非常简单
Scaffold-DbContext "Server=localhost;Database=TestDb;uid=lucy;pwd=123;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -UseDatabaseNames -NoPluralize -Force

常用的参数解读

参数                           | 说明                                                                                                                     |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `-Connection <String>`       | 用于连接到数据库的连接字符串。 对于 ASP.NET Core 2.x 项目,值可以是 name=<name of connection string>**。 在这种情况下,名称来自为项目设置的配置源。 这是一个位置参数,并且是必需的。 |
| `-Provider <String>`         | 要使用的提供程序。 通常,这是 NuGet 包的名称,例如:`Microsoft.EntityFrameworkCore.SqlServer`。 这是一个位置参数,并且是必需的。                              |
| `-OutputDir <String>`        | 要在其中放置实体类文件的目录。 路径相对于项目目录。                                                                                             |
| `-ContextDir <String>`       | 要在其中放置 `DbContext` 文件的目录。 路径相对于项目目录。                                                                                   |
| `-Namespace <String>`        | 要用于所有生成的类的命名空间。 默认设置为从根命名空间和输出目录生成。                                                                                    |
| `-ContextNamespace <String>` | 要用于生成的 `DbContext` 类的命名空间。 注意:重写 `-Namespace`。                                                                         |
| `-Context <String>`          | 要生成的 `DbContext` 类的名称。                                                                                                 |
| `-Schemas <String[]>`        | 要为其生成实体类型的表和视图的架构。 如果省略此参数,则包含所有架构。 如果使用此选项,架构中的所有表和视图都将包含在模型中,即使未使用 -Table 显式包含它们也是如此。                                |
| `-Tables <String[]>`         | 要为其生成实体类型的表和视图。 可以使用“schema.table”或“schema.view”格式包含特定架构中的表或视图。 如果省略此参数,则包含所有表和视图。                                     |
| `-DataAnnotations`           | 使用属性配置模型(如果可能)。 如果省略此参数,则仅使用 Fluent API。                                                                               |
| `-UseDatabaseNames`          | 使用与数据库中显示的名称完全相同的表、视图、序列和列名称。 如果省略此参数,数据库名称将更改为更符合 C# 名称样式约定。                                                          |
| `-Force`                     | 覆盖现有文件。                                                                                                                |
| `-NoOnConfiguring`           | 不生成 `DbContext.OnConfiguring`。                                                                                         |
| `-NoPluralize`               | 请勿使用复数化程序。

最后按回车就开始生成数据表了,是不是非常简单实用。