未使用EF迁移创建SQL Azure表

emr*_*azi 7 migration entity-framework azure-sql-database

我在我的应用程序中使用SQL Azure数据库进行EF迁移.在我手动删除SQL Azure中的表之前,它工作正常.现在,当我发布我的应用程序时,未在SQL Azure中创建删除表.这是我得到的错误.

Cannot find the object "dbo.TableName" because it does not exist 
or you do not have permissions.
Run Code Online (Sandbox Code Playgroud)

我觉得我在数据库和模型之间造成了一些不一致.

我正在使用自动迁移.

Ben*_*man 4

为什么一开始要删除该表?您想要重新创建它吗?

在我们讨论更棘手的解决方案之前,您是否尝试过使用 -TargetMigration 选项回滚到在其中创建表的迁移之前的迁移?我有一种感觉,当您尝试删除不存在的 fk 表或索引时,您会收到 SQL 错误,但值得一试。您可以使用此命令来完成此操作update-database -TargetMigration YourOldMigration。这将通过运行迁移文件的 Down() 方法中的命令来回滚目标迁移后应用的所有迁移。如果您收到 SQL 错误,您可以尝试修改 Down() 方法的内容以避免错误。小心。这可能会导致数据丢失。如果 EF 警告您这一点而您并不在意。尝试在命令末尾添加 -Force 。

或者,另外......

您的迁移不仅仅是通过将数据库方案与数据库上下文/模型进行比较来计算的。如果您在 sql server management studio 中打开 sql azure 数据库,您应该会看到一个名为 __MigrationHistory 的表。它存储通过自动迁移应用于数据库的所有迁移。

请在开始之前通读一遍。在开始之前,您需要考虑一些因素。假设您尚未对此进行操作,您应该能够找到最初创建表的更改集的行。删除该行。现在 EF 自动迁移会认为该更改尚未应用于您的数据库。如果您运行 update-database 它应该尝试重新运行它。

如果您对该迁移文件进行了其他更改,它也会尝试重新运行这些更改。这可能会导致各种 sql 错误。您可能需要手动回滚属于该迁移一部分的所有更改。担心数据丢失?尝试将数据复制到手动创建的表中进行存储,直到完成为止。迁移开始后,您可以将数据复制回新表/列中。

双重选择。如果您还没有进入开发阶段,并且不太担心数据丢失,那么删除整个数据库并让自动迁移从头开始重新创建它可能会更容易。

希望能带你到达那里