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

C# EF Code First 6.1将ID从Int更改为Long,c#,entity-framework,ef-code-first,C#,Entity Framework,Ef Code First,我正在开发一个首先使用ASP.NETMVC4、C#和实体框架代码的应用程序。有一个模型(表)越来越大,我担心Identity列的值(Int32.MaxValue)将在明年左右用完 我正在寻找一种方法,将此标识从int改为long。在过去,当我尝试这一点时,EF不会让我这样做,除非它放弃表格并重新创建它。这不是一个选项,因为站点已经处于活动状态,并且此表中存在活动数据 有办法做到这一点吗?到目前为止,我的web搜索和Stackoverflow搜索没有给我任何关于如何执行此操作的提示。需要代码优先迁

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

我正在寻找一种方法,将此标识从int改为long。在过去,当我尝试这一点时,EF不会让我这样做,除非它放弃表格并重新创建它。这不是一个选项,因为站点已经处于活动状态,并且此表中存在活动数据


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

需要代码优先迁移:

1) 更新您的模型 2) 创建您的迁移 3) 在生成的迁移中编写自定义SQL以删除PK和引用PK的每个FK。这可能会变得相当混乱,因为你必须找出名字。把这个放在你的专栏上面。 4) 编写自定义SQL以重新添加PK和FK,并将其放在列下。 5) 现在在向下脚本中执行相反的操作


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

我刚刚用SQL Server的EF 6.1.3实现了这一点,在更改了我的模型并运行了添加迁移之后,EF能够自己创建正确的迁移!太棒了


对于那些使用相同设置(我想这是EF6最常见的用例)的人来说,最好的解决方案是更新EF库,更改代码,像往常一样创建迁移,并确保它按照Jeff上面描述的那样进行。

谢谢您回复我。我很害怕。不幸的是,我们正在使用sql azure。如果使用代码优先迁移,您如何“创建迁移”?