【问题标题】:To change the IDENTITY property of a column error in EF Core DB更改 EF Core DB 中列错误的 IDENTITY 属性
【发布时间】:2021-11-18 13:30:57
【问题描述】:

我在尝试向数据库表中添加新列时开始收到此消息。我确实没有尝试对数据库中的键列进行任何更改。

要更改列的 IDENTITY 属性,需要删除并重新创建该列。

因此,在网上通过各种潜在的解决方案,我一直试图放下桌子并更换它等等,但没有任何运气。当我在 PMC 中运行 Update-Database 时,我得到了同样的错误,因此不能删除任何内容,也不能将任何内容添加到数据库中。它完全被阻止了,我不知道为什么因为我没有更改数据库中的任何基本内容,我只是在表中添加了一个普通的 int 列并尝试迁移更新。

然后,我在网上看到信息说我应该删除表并更新数据库,EF核心将替换表以使数据库恢复同步。我在 VS SQL Server 对象资源管理器中右键单击该表并将其删除。但是当我添加迁移并运行Update-Database 时,我再次收到错误:

要更改列的 IDENTITY 属性,需要删除并重新创建该列。

这还没有投入生产,所以我不关心删除我的表会丢失数据,但它完全阻止了我。我怎样才能让我的数据库更新再次运行,这样我才能恢复我的表而不看到这个错误?

我不知道是什么导致了这个问题。在这一点上,我想我应该在 Azure 中为我的解决方案创建一个全新的数据库并一个一个地重新创建表,但这需要几天/几周,我不知道它是否会解决这个问题。

有没有人遇到过这个问题,你知道从头开始重新创建我的数据库是否会解决问题,还是它通常起源于一个完整的数据库重新创建无济于事的地方?

【问题讨论】:

  • 也许您应该展示您所做的更改以及迁移代码的样子。
  • 我希望我能做到,但我已经为此工作了好几天,并且我已经做出和撤消了很多更改,我不知道原始更改从哪里开始和结束。我可以将我的 git 提交恢复到几天前的位置,我也可以恢复到以前的迁移,但是当我每次尝试更新数据库时都会收到相同的错误时,这不会对数据库做任何事情。

标签: sql-server entity-framework entity-framework-core


【解决方案1】:

我修好了!有时你只需要写下来就可以用新的方法回来!

通过使用 ''Update-Database -Migration [migration name]'',我能够逐个尝试每个迁移,并从最近一次开始。通过这样做,我发现问题出在特定的迁移 4 或 5 迁移回来。谢天谢地,我总是保持迁移量很小。然后我使用 Remove-Migration 将它们一一删除,回到最后一个好的。这使我能够按照我在网上找到并尝试昨天的步骤来创建一个新表。但是我有另一个关于重复列名的错误,所以我需要创建没有列的新表,并从旧表的模型中删除一些列,然后才能删除有问题的表(仍然不知道它为什么停止工作)。然后,我将旧表模型添加到新表模型以取回我的列,并重命名新表以匹配旧表。现在工作正常。当我切换表格时,还需要进行一些评论和取消评论才能使构建工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 2018-03-07
    • 2020-10-12
    • 2021-02-05
    • 2018-03-06
    相关资源
    最近更新 更多