1.在程序包管理器控制台使用Scaffold-DbContext 命令,该命令会从数据库反向生成Models到指定目录中.
首先在项目中新建文件夹存放反向生成的Models
然后在程序包管理器控制台使用Scaffold-DbContext 命令
Scaffold-DbContext 'Data Source=C:\Users\zzzx\AppData\Local\blogging.db;' Microsoft.EntityFrameworkCore.Sqlite -OutputDir Models
这个是我本地数据库的表结构
通过 命令在项目反向生成了每个表对应的Model
如果你只是想生成Model即可,后续内容可以不用读了.
如果你需要继续连接这个数据库进行后续的开发工作,则此时会有问题存在,
现在你的项目是还没有对新生成的这些Model进行Add-Migration的,所以,若此时你使用Add-Migration生成新的迁移文件,会生成一个创建上面我们刚刚从数据库中导出Models的新增的迁移文件.
若此时我们将这个迁移更新到刚才那个数据库,就会报错
表blogs已经存在,因为EFCore的Scaffold-DbContext命令只能生成这样的效果,我们只能配合他的思路来解决问题.
有两种解决方式:
第一种 导出源数据库的数据做备份,然后再删除源数据库的所有表,然后 在程序包管理器控制台输入 update-database 即可重新生成这些表,你就可以接着这个数据库进行开发,再将刚刚备份数据导入新生成的表里即可.
第二种方式 在数据库的如图所示的表里手动添加数据,详细如何添加,见图片里的描述
然后你再输入生成迁移命令,
add-migration afterScaffolddb
此时生成了一个空的迁移文件
然后你再执行
update-database 命令,
从现在开始,你的代码就和数据库保持一直了,你就可以接着进行后面的开发工作了.这个方式的好处是不用删除数据库,接着源数据库进行开发.