EFCore 使用Scaffold-DbContext 命令从已有数据库反向生成Models,并且继续连接该数据库进行后续开发工作

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 命令,
在这里插入图片描述
从现在开始,你的代码就和数据库保持一直了,你就可以接着进行后面的开发工作了.这个方式的好处是不用删除数据库,接着源数据库进行开发.

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值