此时,直接执行会出错,因为,生成目录中存在同名文件,我先手动删除掉
偶尔会抽时间去微软官方看些资料,前面一直在学,对了解甚少,最近,一位网友看了我写的这篇文字后,问了一个问题怎么根据数据库生成相应的实体类?,这可把我问到了,所以,今天就抽时间去官网看了看。
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
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.