最近两个月将12年开发的果蔬行业ERP升级到.NET Core,表结构变化比较大,迁移数据比较麻烦,所以写一个迁移程序来解决。为了减少代码量,决定用EF Core。EF Core中提供了一个命令Scaffold-DbContext,可以从数据库表生成模型类。
使用Scaffold-DbContext命令需要项目中安装 Microsoft.EntityFrameworkCore.Design 和 Microsoft.EntityFrameworkCore.SqlServer 包,如果是MySQL的话则安装 Pomelo.EntityFrameworkCore.MySql
然后就可以在 程序包管理器控制台 中运行 Scaffold-DbContext 命令了。
执行 get-help Scaffold-DbContext 可以查看帮助,会输出一下信息
名称 Scaffold-DbContext 摘要 Scaffolds a DbContext and entity types for a database. 语法 Scaffold-DbContext [-Connection] <String> [-Provider] <String> [-OutputDir <String>] [-ContextDir <String>] [-Context <String>] [-Schemas <String[]>] [-Tables <String[]>] [-DataAnnotations] [-UseDatabaseNames] [-Force] [-Project <String>] [-StartupProject <String>] [<CommonParameters>] 说明 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"
Provider常用的有
Scaffold-DbContext -Connection "server=.;uid=user;pwd=pwd;database=databse;" -Provider Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Context MyDbConetxt -Project xx
我程序中使用的是MySQL,Provider用的是 Pomelo.EntityFrameworkCore.MySql ,使用过程中遇到下面两个问题,同时给出解决办法。
同时要注意的是, Pomelo.EntityFrameworkCore.MySql 要使用3.0以上的版本
EF Core使用Scaffold-DbContext从数据库生成模型
原文:https://www.cnblogs.com/shijiehaiyang/p/14721155.html