gpt4 book ai didi

entity-framework - SQL Azure 表不是使用 EF 迁移创建的

转载 作者:行者123 更新时间:2023-12-04 12:34:15 26 4
gpt4 key购买 nike

我在我的应用程序中使用 EF 迁移和 SQL Azure 数据库。在我手动删除 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 错误。您可能希望手动回滚也是该迁移的一部分的所有更改。担心数据丢失?尝试将数据复制到手动创建的表中进行存储,直到完成。迁移工作后,您可以将数据复制回新表/列。

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

希望能让你到达那里

关于entity-framework - SQL Azure 表不是使用 EF 迁移创建的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13826651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com