欢迎光临
个人技术文档整理

Scaffold-DbContext 基于现有数据库创建模型(EFCore反向工程)

DataBase First 方式构建

工具的scaffold-dbcontext(数据库上下文脚手架)指令来生成models和context。

-Connection <String>	用于连接到数据库的连接字符串。 对于 ASP.NET Core 2.x 项目,该值可以是连接字符串>的名称=<名称。 在这种情况下,名称来自为项目设置的配置源。 这是一个位置参数,并且是必需的。
-Provider <String>	要使用的提供程序。 通常,这是 NuGet 包的名称,例如:Microsoft.EntityFrameworkCore.SqlServer。 这是一个位置参数,并且是必需的。
-OutputDir <String>	要在其中放置实体类文件的目录。 路径相对于项目目录。
-ContextDir <String>	要在其中放置 DbContext 文件的目录。 路径相对于项目目录。
-Namespace <String>	要用于所有生成的类的命名空间。 默认设置为从根命名空间和输出目录生成。 已在 EF Core 5.0 中添加。
-ContextNamespace <String>	要用于生成的 DbContext 类的命名空间。 注意:重写 -Namespace。 已在 EF Core 5.0 中添加。
-Context <String>	要生成的 DbContext 类的名称。
-Schemas <String[]>	要为其生成实体类型的表的架构。 如果省略此参数,则包含所有架构。
-Tables <String[]>	要为其生成实体类型的表。 如果省略此参数,则包含所有表。
-DataAnnotations	使用属性配置模型(如果可能)。 如果省略此参数,则仅使用 Fluent API。
-UseDatabaseNames	使用与数据库中显示的名称完全相同的表和列名。 如果省略此参数,数据库名称将更改为更符合 C# 名称样式约定。
-Force	覆盖现有文件。
-NoOnConfiguring	不生成 DbContext.OnConfiguring。 已在 EF Core 5.0 中添加。
-NoPluralize	请勿使用复数化程序。 已在 EF Core 5.0 中添加。
-Project <String>	目标项目。 如果省略此参数,则包管理器控制台的默认项目将用作目标项目。

1 在nuget包中引用两个包

Microsoft.EntityFrameworkCore.Tools
//SqlServer 引入
Microsoft.EntityFrameworkCore.SqlServer
//Mysql 引入
Pomelo.EntityFrameworkCore.Mysql
//Sqlite  引入
Microsoft.EntityFrameworkCore.Sqlite 

2使用命令生成(nuget管理控制台输入命令)Scaffold-DbContext 基于现有数据库生成实体类(EFCore反向工程)


//SqlServer
Scaffold-DbContext  "Server=.;Database=EF_DB;User=sa;Password=123;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

//mysql
Scaffold-DbContext  "server=127.0.0.1;uid=user;pwd=pwd;database=databse;" Pomelo.EntityFrameworkCore.MySql -OutputDir Models

//(sqlite)
Scaffold-DbContext  "server=127.0.0.1;uid=user;pwd=pwd;database=databse;" Microsoft.EntityFrameworkCore.Sqlite -OutputDir Models

3 参考参数 (此处以SqlServer为例)

//1,普通的命令
Scaffold-DbContext  "Server=.;Database=EF_DB;User=sa;Password=123;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

//2,加force参数,当Models文件夹下已有数据库实体类时使用。
Scaffold-DbContext  "Server=.;Database=EF_DB;User=sa;Password=123;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -force

//3,指定生成某一个数据库表的实体类。
Scaffold-DbContext  "Server=.;Database=EF_DB;User=sa;Password=123;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -force  -tables  xxx表

//4,单独的项目中 生成 实体
Scaffold-DbContext  "Server=.;Database=EF_DB;User=sa;Password=123;" Microsoft.EntityFrameworkCore.SqlServer  -Project "xxx类库" -Force 

//5,指定项目 指定目录 指定DbContext名称
Scaffold-DbContext  "Server=.;Database=EF_DB;User=sa;Password=123;" Microsoft.EntityFrameworkCore.SqlServer -Project "EFCoreConsole" -OutputDir "DataAccess"  -ContextDir "DataAccess"   -Context "DataContext"   -Force

 

官方地址:

https://learn.microsoft.com/zh-cn/ef/core/cli/powershell#scaffold-dbcontext

 

赞(2)