从数据库生成Entity/POCO代码

简介

EF本质上是code first的ORM库,虽然我们可以Database first方式开发,实际上EF在内部还是先生成内部模型在同步到数据库。但是很多时候我们的数据库已经建好,我们需要从数据库生成我们需要的DTO对象。有的时候,在数据库建模型更快,我们可以在数据库中建立初始模型,然后生成代码,可以节省很多时间。本文就是介绍如何从现有数据库中生成模型。

Update-Database –SourceMigration $InitialDatabase -Script

EF本身的工具

首先创建一个临时类库项目

从数据库生成Entity/POCO代码_第1张图片
Paste_Image.png

在项目上安装EntityFramework

从数据库生成Entity/POCO代码_第2张图片
Paste_Image.png

在EF目录上右键添加文件,选择ADO.Net实体数据模型

从数据库生成Entity/POCO代码_第3张图片
Paste_Image.png

选择来自数据库的code first,选择下一步

从数据库生成Entity/POCO代码_第4张图片
Paste_Image.png

选择一个数据库连接,连接上需要生成代码的数据库,选择下一步

从数据库生成Entity/POCO代码_第5张图片
Paste_Image.png

选择需要生产的数据表和视图,单击完成

从数据库生成Entity/POCO代码_第6张图片
完成

Binggo,所有类已经生成
用这种方式生成的类,都带有特性来描述这个字段对应数据库的信息。这个类做为Entity,非常不错,但是作为POCO,则会有问题。我们可以手动删除掉所有这些特性,也可以用另外一种办法来生成POCO类。


从数据库生成Entity/POCO代码_第7张图片
Paste_Image.png

生成POCO类
在VS2019,tools-->扩展和更新中,查找选择EntityFramework Reverse POCO Generator工具

从数据库生成Entity/POCO代码_第8张图片
Paste_Image.png

新建一个Entity Framework Reverse POCO code First Generator文件,这会生成一个T4模板文件。

从数据库生成Entity/POCO代码_第9张图片
Paste_Image.png

在T4模板中,copy ContextName到App.config中,替换掉EF生产的DataModel1 连接名字为MyDbContext

从数据库生成Entity/POCO代码_第10张图片
Paste_Image.png

在生成的T4模板文件上右键运行自定义工具,

Paste_Image.png

bingo,所有POCO类已经生成,这样生成的文件没有attribute在字段上,但是类上面有一个信息表明是谁生成这个文件的。

从数据库生成Entity/POCO代码_第11张图片
Paste_Image.png

你可能感兴趣的:(从数据库生成Entity/POCO代码)