Scaffold-DbContext
Scaffold-DbContext
是 EntityFramework(Core)
用来生成数据库上下文的一个脚手架工具.
应用场景
- 当你有一个现成的数据库时,可以使用
Scaffold-DbContext
生成对应的数据库上下文类及模型类,然后使用EntityFrameworkCore
的方式来愉快的调用,这里会有点Database-First
的味道. - ...
帮助
PM> get-help Scaffold-DbContext名称 Scaffold-DbContext 摘要 Scaffolds a DbContext and entity types for a database. 语法 Scaffold-DbContext [-Connection][-Provider] [-OutputDir ] [-ContextDir ] [-Context ] [-Schemas ] [-Tables ] [-DataAnnotations] [-UseDatabaseNames] [-Force] [-Project ] [-StartupProject ] [ ] 说明 Scaffolds a DbContext and entity types for a database. 相关链接 about_EntityFrameworkCore 备注 若要查看示例,请键入: "get-help Scaffold-DbContext -examples". 有关详细信息,请键入: "get-help Scaffold-DbContext -detailed". 若要获取技术信息,请键入: "get-help Scaffold-DbContext -full". 有关在线帮助,请键入: "get-help Scaffold-DbContext -online"
参数
无码说个J8,先来一段:
PM> Scaffold-DbContext -Connection "server=127.0.0.1;uid=user;pwd=pwd;database=databse;" -Provider Pomelo.EntityFrameworkCore.MySql -OutputDir Models -Context MySqlDbConetxt -Project Zaohua.UserRepository
然后再来看看参数:
参数名称 | 是否必填 | 默认值 | 描述 |
---|---|---|---|
Connection | 必填 | "" | 数据库链接字符串,各个数据库的都不大一样 |
Provider | 必填 | "" | 提供器,针对各个数据库的,通常等于 NuGet 对应的包名称 |
Project | 可选 | 当前类库 | 项目,用来指定脚手架生成的内容放到哪个项目下 |
OutputDir | 可选 | 项目目录下 | 输出目录,用来指定脚手架生成的内容放到哪个目录下,通常指定为"Models" |
Context | 可选 | 数据库名称+Context | 上下文名称,用来指定脚手架生成的上下文名称 |
Force | 可选 | flag 参数,无值 | 强制重写现有的模型类文件 |
... | 可选 | ... | 其他一些参数,用到了在补充吧... |
Connection
参数 Connection
常见的值如下:
- Mircosoft SQL Server: ``
- MySQL:
"server=host;uid=user;pwd=password;database=database;"
- SQLite:
Data Source=App_Data/My.db
- ...
通常像这样使用:
PM> Scaffold-DbContext -Connection "值" -其他参数
Provider
参数 Provider
常见的值如下:
- Mircosoft SQL Server:
Microsoft.EntityFrameworkCore.SqlServer
MySQL:- Oracle官方出的包总是有问题,可用下面这个代替MySql.Data.EntityFrameworkCore
- MySQL:
Pomelo.EntityFrameworkCore.MySql
- Sqlite:
Microsoft.EntityFrameworkCore.Sqlite
Oracle:- 暂时没找到什么好用的,再说...
- ...
通常像这样使用:
PM> Scaffold-DbContext -Provider 值 -其他参数
Force
参数 Force
通常用来强制重写现有的模型类文件,比如多次生成时.
可以用来规避此类问题Use the Force flag to overwrite these files.
像这样使用:
PM> Scaffold-DbContext -Force -其他参数