Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 代码优先迁移未正确生成标识列的sql_C#_Entity Framework Migrations - Fatal编程技术网

C# 代码优先迁移未正确生成标识列的sql

C# 代码优先迁移未正确生成标识列的sql,c#,entity-framework-migrations,C#,Entity Framework Migrations,我的EF迁移Up()方法中有以下代码 AlterColumn("dbo.ActivityType", "Id", c => c.Int(nullable: false, identity: true)); 这将生成以下SQL: ALTER TABLE [dbo].[ActivityType] ALTER COLUMN [Id] [int] NOT NULL 这并不是真正将我的列设置为标识,理想情况下,它应该删除该列并将其重新创建为标识列。有什么办法可以解决这个问题吗 看起来这可能是EF

我的EF迁移
Up()
方法中有以下代码

AlterColumn("dbo.ActivityType", "Id", c => c.Int(nullable: false, identity: true));
这将生成以下SQL:

ALTER TABLE [dbo].[ActivityType] ALTER COLUMN [Id] [int] NOT NULL
这并不是真正将我的列设置为标识,理想情况下,它应该删除该列并将其重新创建为标识列。有什么办法可以解决这个问题吗


看起来这可能是EF代码迁移的一个限制,因为它不能正确处理标识列。当我创建一个新列并将其标记为标识时,它可以正常工作,但在设置现有实体时,它似乎会变得混乱。

请参见此Hi Steve感谢您的快速回答,我从EF迁移的角度来看,SQL需要由EF正确创建。是否有方法覆盖用于迁移的AlterColumn方法,以确保其生成正确的SQL。您可以使用SQL(“ALTER TABLE…”)将所需的SQL添加到Up()方法中;然后应用更新数据库。如果您要恢复,您需要编写反向向下()代码。请参阅此Hi Steve感谢您的快速回答,我从EF迁移的角度来看,SQL需要由EF正确创建。是否有方法覆盖用于迁移的AlterColumn方法,以确保其生成正确的SQL。您可以使用SQL(“ALTER TABLE…”)将所需的SQL添加到Up()方法中;然后应用更新数据库。如果要恢复,需要编写reverse Down()代码。