EF Code First 6.1 将 ID 从 Int 更改为 Long

hja*_*her 5 c# entity-framework ef-code-first

我正在开发一个使用 ASP.Net MVC 4、C# 和实体框架代码优先的应用程序。有一个模型(表)变得相当大,我担心 Identity 列将在明年左右用完值(Int32.MaxValue)。

我正在寻找一种方法将该身份从 int 更改为 long。过去,当我尝试此操作时,EF 不会让我这样做,除非它删除表并重新创建它。这不是一个选项,因为该站点已经上线并且该表中有实时数据。

有没有办法做到这一点?到目前为止,我的网络搜索和 Stackoverflow 搜索还没有给我任何关于如何执行此操作的提示。

Jef*_*lop 4

需要代码优先迁移:

1)更新你的模型

2) 创建您的迁移

3) 在生成的迁移中编写自定义 SQL,以删除您的 PK 和引用它的每个 FK。这可能会变得非常混乱,因为您必须弄清楚名称。将其放在您的 AlterColumn 之上。

4) 编写自定义 SQL 来重新添加您的 PK 和 FK,并将其放在您的 AlterColumn 下。

5) 现在在 Down 脚本中执行相反的操作。

仅供参考,这对于 Azure SQL 来说是不可能的。在这种情况下,您必须创建一个新表。