此时,直接执行会出错,因为,生成目录中存在同名文件,我先手动删除掉

偶尔会抽时间去微软官方看些资料,前面一直在学,对了解甚少,最近,一位网友看了我写的这篇文字后,问了一个问题怎么根据数据库生成相应的实体类?,这可把我问到了,所以,今天就抽时间去官网看了看。

ASP.NET Core 6.0

EF Core

跟着官网学ASP.NET Core 6.0之通过EF Core6.0操作数据库

要想将数据库表逆向生成实体类,有两种方式:
一: Visual Studio中安装工具,其实就是引入包,

PMC

Microsoft.EntityFrameworkCore.Tools

打开网易新闻 查看精彩图片

安装好该包后便能在`PM`控制台执行`Scaffold-DbContext`命令来逆向生成实体

二: 使用Core的命令行工具,在Cmd命令行中执行来生成实体

dotnet ef

接下来,我们便来分别实践一次。

Visual Studio PMC逆向生成实体

安装包的过程就省略吧,前面也提到过怎么安装包,我们直接进入到控制台

Microsoft.EntityFrameworkCore.Tools

NuGet

PM

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

这里我是使用的,在开始之前,我先在数据库中创建了的和两张表。另外,关于数据库的驱动包安装,在前面也提到过,也就不在赘述。咱们直接上手操作起来。

Mariadb

td_order

tm_user

跟着官网学ASP.NET Core 6.0之通过EF Core6.0操作数据库

直接在控制台输入, 如:

PM

Scaffold-DbContext '数据连接' 数据库驱动

1

Scaffold-DbContext 'Server=127.0.0.1;User=root;Password=root;Database=mall' Pomelo.EntityFrameworkCore.MySql

打开网易新闻 查看精彩图片

执行成功后,会生成、、三个文件,

xxxContext

TdOrder

TmUser

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

刚才是全库生成,有时候我们想只生成某张表的实体,也是支持的指定参数来过滤,可以为数组,如或者,另外,默认是,我们也可以指定参数来生成指定的名,如:。我们来试一试

Scaffold-DbContext

Tables

-Tables td_order

-Tables td_order,tm_user

Context

DataBaseNameContext

Context

-Context MallContext

1

Scaffold-DbContext 'Server=127.0.0.1;User=root;Password=;Database=mall' Pomelo.EntityFrameworkCore.MySql -Tables tm_user -Context MallContext

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

是不是觉得生成的实体只有代码,没有注释?错了,其实EF为什么考虑得很全面,我们只需要在表字段加上注释,EF Core便会为我们生成对应的注释

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

默认情况下,`Scaffold-DbContext`生成的文件会放在项目根目录,文件较多的话,看上去会很乱,所以,在生成的时候,最好是知道生成目录,指定目录的话,自然也会涉及到类的命令空间,这些,都可以通过指定参数来处理,如:`-ContextDir Content生成的文件夹 -OutputDir 实体生成的文件夹 -ContextNamespace Context的命名空间 -Namespace 实体的命名空间`,示例: ![](https://xxnote.52fx.biz/ef_core_tutorials_01_000015.png) `Scaffold-DbContext`逆向生成实体类,咱们就暂时了解这么多,接下来,去大概了解一下Cmd命令逆向生成实体

1

Scaffold-DbContext 'Server=127.0.0.1;User=root;Password=;Database=mall' Pomelo.EntityFrameworkCore.MySql -Tables tm_user -Context MallContext -ContextDir Context -OutputDir Models -ContextNamespace CoreDemo.Context -Namespace CoreDemo.Models

Cmd命令行逆向生成实体

要想通过Cmd命令行逆向生成实体,前提是本机已经安装有dotnet core sdk,另外,还得安装命令,我相信,使用.netcore的同志已经具备这样的条件,但是,一般是没有安装,这里就要先安装该命令

dotnet-ef

dotnet-ef

1

dotnet tool install --global dotnet-ef

打开网易新闻 查看精彩图片

命令行工具安装成功后,还需要在项目中添加包,因为,我前面已引入了包,其已关联安装好,这里我就不再去重复操作,直接进入到项目目录执行生成命令,

icrosoft.EntityFrameworkCore.Design

Microsoft.EntityFrameworkCore.Tools

1
2

dotnet ef dbcontext scaffold "Server=127.0.0.1;User=root;Password=root;Database=mall" Pomelo.EntityFrameworkCore.MySql --table tm_user --table td_order --context MallContext --context-dir Context --output-dir Models --context-namespace CoreDemo.Context --namespace CoreDemo.Models

打开网易新闻 查看精彩图片

就大概了解这么,其实用法和和功能与差不多,只是参数会有一些差别。

dotnet-ef

Scaffold-DbContext

官方介绍,在逆向生成实体时,ef core会去读取有关表、列、约束和索引的信息,表名为实体类名;列名和列类型属性名和属性类型;外键为实体对应关系。 并且为实体类生成相应的数据注释。

好了,这一节就先了解到这个地方,感兴趣的伙伴们可以去官网详细了解,Reverse Engineering