Entity framework 未使用EF迁移创建SQL Azure表
我正在我的SQL Azure数据库应用程序中使用EF迁移。在我在SQLAzure中手动删除一个表之前,它一直运行良好。现在,当我发布我的应用程序时,删除的表不是在SQLAzure中创建的。这就是我得到的错误Entity framework 未使用EF迁移创建SQL Azure表,entity-framework,migration,azure-sql-database,Entity Framework,Migration,Azure Sql Database,我正在我的SQL Azure数据库应用程序中使用EF迁移。在我在SQLAzure中手动删除一个表之前,它一直运行良好。现在,当我发布我的应用程序时,删除的表不是在SQLAzure中创建的。这就是我得到的错误 Cannot find the object "dbo.TableName" because it does not exist or you do not have permissions. 我觉得我在数据库和模型之间造成了一些不一致 我正在使用自动迁移。为什么一开始就删除表?是否要重
Cannot find the object "dbo.TableName" because it does not exist
or you do not have permissions.
我觉得我在数据库和模型之间造成了一些不一致
我正在使用自动迁移。为什么一开始就删除表?是否要重新创建它 在我们进入更复杂的解决方案之前,您是否尝试过在创建表之前使用-TargetMigration选项回滚到迁移?我有一种感觉,在试图删除一个不存在的fk表或索引时,您会遇到SQL错误,但值得一试。您可以使用以下命令执行此操作
更新数据库-TargetMigration-yourldmigation
。这将通过运行迁移文件的Down()方法中的命令,回滚在目标迁移之后应用的所有迁移。如果遇到SQL错误,可以尝试修改Down()方法的内容以避免错误。仔细的这可能会导致数据丢失。如果EF警告你这一点,而你不在乎。尝试在命令末尾添加-Force
或者,另外
迁移不仅仅是通过将db方案与dbcontext/模型进行比较来计算的。如果在SQLServerManagementStudio中打开SQLAzure数据库,您应该会看到一个名为_umigrationHistory的表。它存储通过自动迁移应用到数据库的所有迁移
开始前请通读一遍。在跳进之前,你会考虑一些因素。假设您还没有对其进行操作,您应该能够为最初创建表的更改集找到一行。删除该行。现在EF automatic migrations会认为这个更改还没有应用到您的数据库中。如果您运行更新数据库,它应该尝试并重新运行它
如果迁移文件中有其他更改,它也会尝试重新运行这些更改。这可能会导致各种sql错误。您可能希望手动回滚迁移过程中的所有更改。担心数据丢失?尝试将数据复制到手动创建的表中进行存储,直到完成。完成迁移后,可以将数据复制回新表/列中
双重选择。如果您还没有进入开发阶段,并且不太担心数据丢失,那么删除整个数据库并让自动迁移从头开始重新创建它可能会更容易
希望你能到那里