请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

正在回答 回答被采纳积分+3

2回答

阿莱克斯刘 2020-09-25 12:00:15

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

1 回复 有任何疑惑可以回复我~
  • 提问者 慕慕1052774 #1
    我在更新数据库表数据时,会出现,‘TouristRoutes’ 的对象已存在,怎么避免在更新数据库数据时,对象以存在,
    回复 有任何疑惑可以回复我~ 2020-09-27 15:26:44
  • 阿莱克斯刘 回复 提问者 慕慕1052774 #2
    两个步奏可以试试,第一,删库,整个数据库全部删掉,一样不留,然后运行dotnet ef database update(因为你已经有migration文件了,所有数据库会根据你的迁移记录重新建立)。第二,如果删库也不行,那么就把整个migration文件夹也全部删除,重新执行“dotnet ef migrations add 迁移名称” 这个命令,然后再执行update database。还不行的话,请继续追问。
    回复 有任何疑惑可以回复我~ 2020-09-27 16:50:01
灬丿蝶恋花 2021-07-17 08:24:08

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

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

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


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

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

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

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

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

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

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

解决方式有两个:

1、删库重新执行脚本

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

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




0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信