在ASP.NET Core下使用Scaffold-DbContext命令自动从数据库生成EF Core模型
在ASP.NET Core下使用EF Core读取和操作数据库时,若采用DB First开发模式,则需要手动写或者自动生成相关实体类和DBContext类。自动生成可采用Scaffold-DbContext命令。而使用该命令需要在实体类所在项目引用Microsoft.EntityFrameworkCore.Tools包和MySql.Data.EntityFrameworkCore包(MySQL引用该包,其它数据库引用相应的其它对应包)。
(1)在VS菜单中依次点击“视图”/“其它窗口”/“程序包管理控制台”,打开程序包管理控制台:
(2)在程序包管理控制台中输入如下命令:
Scaffold-DbContext -Force -Connection "{ConnStr}" -Provider MySql.Data.EntityFrameworkCore -OutputDir . -Context SUSEAluminDbContext -DataAnnotations -UseDatabaseNames
其中{ConnStr}请用数据库连接字符串替换,“默认项目”处请选择要生成实体类的项目。
(3)Scaffold-DbContext数据库上下文脚手架命令格式如下:
Scaffold-DbContext [-Connection] <String> [-Provider] <String> [-OutputDir <String>] [-Context <String>]
[-Schemas <String>] [-Tables <String>] [-DataAnnotations] [ -Force] [-Project <String>]
[-StartupProject <String>] [-Environment <String>] [<CommonParameters>]
参数解释如下:
-Connection <String>
指定数据库的连接字符串。
-Provider <String>
指定要使用的提供程序。例如,Sql Server使用Microsoft.EntityFrameworkCore.SqlServer、MySql使用MySql.Data.EntityFrameworkCore等。
-OutputDir <String>
指定用于输出类的目录。如果省略或使用英文句号,则使用当前项目根目录。
-Context <String>
指定生成的DbContext类的名称。
-Schemas <String>
指定要为其生成类的模式,如dbo等。
-Tables <String>
指定要为其生成类的表,多个表用英文逗号隔开。
-DataAnnotations [<SwitchParameter>]
使用DataAnnotation属性在可能的情况下配置模型。如果省略,输出代码将仅使用流畅的API。
-Force [<SwitchParameter>]
强制脚手架覆盖现有文件。否则,只有在没有输出文件被覆盖的情况下,代码才会继续。
-Project <String>
指定要使用的项目。如果省略,则使用默认项目。
-StartupProject <String>
指定要使用的启动项目。如果省略,则使用解决方案的启动项目。
-Environment <String>
指定要使用的环境。如果省略,则默认值为“Development”。