NetCore+MySql+EF 数据库生成实体模型

时间:2021-11-27 11:57:10

NetCore版本    2.1

1.点击“工具”->“NuGet包管理器”->“程序包管理器控制台”

分别安装以下几个包

Mysql 版本:

 MySql.Data.EntityFrameworkCore                  V-8.0.16  
 Pomelo.EntityFrameworkCore.MySql                 V-2.1.1
 Microsoft.EntityFrameworkCore.Tools                V-2.1.1
 Microsoft.VisualStudio.Web.CodeGeneration.Design        V-2.1.1

2.在程序包包管理器控制台   中执行以下语句生成 实体类

Scaffold-DbContext "server=.;userid=;pwd=xxx;port=3306;database=;sslmode=none;" Pomelo.EntityFrameworkCore.MySql -OutputDir Models -Force

参数说明:

-OutputDir *** 实体文件所存放的文件目录
-ContextDir *** DbContext文件存放的目录
-Context *** DbContext文件名
-Schemas *** 需要生成实体数据的数据表所在的模式
-Tables *** 需要生成实体数据的数据表的集合
-DataAnnotations
-UseDatabaseNames 直接使用数据库中的表名和列名(某些版本不支持)
-Force 强制执行,重写已经存在的实体文件

 

 

在这里需要注意的问题 

 

项目结构

1.Web

2.Entity

1.实体生成在Entity 中,但是Pomelo.EntityFrameworkCore.MySql  报错 了,但是在Web项目中就能生成

解决方案 主项目添加实体项目的依赖 问题解决

 

2.从数据库读取到内存时  报了错误 显示 

Void Microsoft.EntityFrameworkCore.Storage.Internal.RelationalParameterBuilder..ctor(Microsoft.EntityFrameworkCore.Storage.IRelationalTypeMapper

 

原因是因为Pomelo.EntityFrameworkCore.MySql 的版本 V2.0.0 改成 V2.1.1 的解决问题

 

综上  nuget 的引用 安装的时候自动会检测 依赖会大大降低 包版本的问题,但是 有的问题还是不能自定检测出来。

如果想避免此类的问题尽量引用相同版本的包!