反向工程
支持工具
反向工程之前你将需要安装 PMC 工具或 CLI 工具,还需要安装相应数据库提供程序。
使用工具命令
Scaffold-DbContext 'Data Source=(localdb)MSSQLLocalDB;Initial Catalog=Chinook'
Microsoft.EntityFrameworkCore.SqlServer
dotnet ef dbcontext scaffold "Data Source=(localdb)MSSQLLocalDB;Initial Catalog=Chinook" Microsoft.EntityFrameworkCore.SqlServer
配置和用户机密
dotnet user-secrets set ConnectionStrings.test "Data Source=(localdb)MSSQLLocalDB;Initial Catalog=Test" dotnet ef dbcontext scaffold Name=ConnectionStrings.test Microsoft.EntityFrameworkCore.SqlServer
提供程序名称
第二个参数是提供程序名称。 提供程序名称通常是与提供程序的 NuGet 包名称相同
指定表
默认情况下,数据库中的所有表都被反向工程,您可以通过指定架构和表筛选。
在PMC 命令中使用 -Schemas 参数,在 CLI 中使用 --schema 参数,可指定架构中的每个表。
在PMC 命令中使用 -Tables 参数,在 CLI 中使用 --table 参数,可指定特定的表。
Scaffold-DbContext ... -Tables Artist, Album
dotnet ef dbcontext scaffold ... --table Artist --table Album
保留数据库名称
默认情况下,表和列的名称被更好地生成符合 .NET 命名约定的类和属性,使用 -
UseDatabaseNames(PMC)或 --use-database-names(CLI),将尽可能保留原始数据库的表名称和列名称。
Fluent API 或数据注释
默认情况,优先使用 Fluent API 配置模型,指定-DataAnnotations(PMC) 或--data- annotations(CLI) 在数据注解可用的情况下,优先使用数据注解配置模型。
DbContext 名称
默认情况下,生成 DbContext 的类名为:数据库名称+Context后缀,使用-Context(PMC) 和 --context(CLI) 可自定义名称。
目录和命名空间
默认情况,反向工程生成的类和 DbContext 存放在项目根目录,命名空间使用项目默认命名空间,可通过 -OutputDir(PMC) 或--output-dir(CLI) 指定的目录。命名空间将为根命名空间加上任何项目的根目录下的子目录的名称。
此外可以使用-ContextDir(PMC) 和--context-dir(CLI) 将 DbContext 类放在独立的目录之下。
Scaffold-DbContext ... -ContextDir Data -OutputDir Models
dotnet ef dbcontext scaffold ... --context-dir Data --output-dir Models
Entity Framework Core tools reference
来自<https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/>