11.6节中更新数据库时(update-database)报错,

来源:11-6 【应用】用户模型设计与数据库更新

慕慕1052774

2020-09-24

我在更新表的时候 也就在11.6节中更新数据库时(update-database),出现报错为:Microsoft.Data.SqlClient.SqlException (0x80131904): 数据库中已存在名为 ‘TouristRoutes’ 的对象。我现在又不想删除原来Microsoft.Data.SqlClient.SqlException (0x80131904): 数据库中已存在名为 ‘TouristRoutes’ 的对象。如果出现这个问题,我怎么去修改,更新表了,大神

写回答

2回答

阿莱克斯刘

2020-09-25

“我现在又不想删除原来Microsoft.Data.SqlClient.SqlException (0x80131904): 数据库中已存在名为 ‘TouristRoutes’ 的对象。”这句话是什么意思啊?是不想删数据库吗?

1
2
阿莱克斯刘
回复
慕慕1052774
两个步奏可以试试,第一,删库,整个数据库全部删掉,一样不留,然后运行dotnet ef database update(因为你已经有migration文件了,所有数据库会根据你的迁移记录重新建立)。第二,如果删库也不行,那么就把整个migration文件夹也全部删除,重新执行“dotnet ef migrations add 迁移名称” 这个命令,然后再执行update database。还不行的话,请继续追问。
2020-09-27
共2条回复

灬丿蝶恋花

2021-07-17

是想表达说现在已经生成过数据库了

但是修改代码重新生成或者更新了迁移脚本之后

执行异常了,提示已经存在了对应的数据库表这个情况么。


如果是上述情况的话,其实是要思考下 为什么出现了那个情况

是不是在生成迁移脚本执行后进行了迁移脚本的删除,又重新做了呢

如果是的话其实是因为操作流程的问题导致的,

在每次执行迁移脚本生成的时候会进行之前迁移脚本生成的检查以保证新生成的脚本只是修改差异部分

如果在执行之后又删除了迁移脚本就会产生一个情况,迁移工具并不知道你已经在数据库中做过建表的操作了

在新增迁移的时候还是会在脚本中生成建表的操作

但是会在执行数据库更新的时候报出数据库表已存在的异常。

解决方式有两个:

1、删库重新执行脚本

2、如果不想删除现有库,修改生成的迁移脚本,移除自动生成的脚本把当前的补充修改添加进去(只要数据库的状态和你当前执行脚本的状态一样了,后续进行迭代更新的话就可以正常的迭代了)

注:使用EF时,应按照EF的约束走,一旦修改执行到了数据库,就不应该在进行脚本的撤销删除(除非对应的脚本执行了回滚操作)




0
0

.Net 开发电商后端API 从0到精通RESTful

. Net 实战+RESTful思想纵深课程,开发优雅RESTful风格API。

977 学习 · 547 问题

查看课程