entity-framework – 未使用EF Migrations创建的SQL Azure表
我在我的应用程序中使用SQL Azure数据库进行EF迁移.在我手动删除SQL Azure中的表之前,它工作正常.现在,当我发布我的应用程序时,未在SQL Azure中创建删除表.这是我得到的错误.
Cannot find the object "dbo.TableName" because it does not exist or you do not have permissions. 我觉得我在数据库和我的模型之间造成了一些不一致. 我正在使用自动迁移. 解决方法你为什么要删除表开头?你想要重新创建吗?在我们进入棘手的解决方案之前,您是否尝试使用-TargetMigration选项在您的表创建之前回滚到迁移?我有一种感觉,你会得到关于尝试删除不存在的fk表或索引的SQL错误,但它值得一试.您可以使用此命令update-database -TargetMigration YourOldMigration执行此操作.这将通过运行迁移文件的Down()方法中的命令来回滚目标迁移后应用的所有迁移.如果您遇到SQL错误,可以尝试修改Down()方法的内容以避免错误.小心.这可能会导致数据丢失.如果EF警告你这件事并且你不在乎.尝试添加-Force以结束命令. 另外还有…. 您的迁移不仅仅是通过将db方案与dbcontext / models进行比较来计算的.如果在sql server management studio中打开sql azure数据库,则应该看到一个名为__MigrationHistory的表.它存储通过自动迁移应用于数据库的所有迁移. 请在开始前一直阅读.在进入之前,您需要考虑一些因素.假设您尚未操作此操作,您应该能够找到最初创建表的更改集的行.删除该行.现在EF自动迁移会认为该更改尚未应用于您的数据库.如果你运行update-database,它应该尝试重新运行它. 如果您在该迁移文件中有其他更改,它将尝试重新运行这些更改.这可能会导致各种sql错误.您可能希望手动回滚所有也属于该迁移的更改.担心数据丢失?尝试将数据复制到手动创建的表中,直到完成后再存储.迁移完成后,您可以将数据复制回新的表/列. 双重选择.如果您没有进入开发阶段并且没有太多关于数据丢失的担忧,那么删除整个数据库并让自动迁移从头开始重新创建它可能会更容易. 希望能让你到达那里 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |