使用 Entity Framework 核心迁移更改主键

Changing Primary Key using Entity Framework Core Migrations

我正在尝试通过 Entity Framework 核心迁移更改 table 的主键:

protected override void Up(MigrationBuilder migrationBuilder)
{
        migrationBuilder.DropPrimaryKey(
            name: "PK_Permissions",
            table: "Permissions");
}

当我尝试更新数据库时收到以下错误消息:

To change the IDENTITY property of a column, the column needs to be dropped and recreated.

如何更新数据库?

我找到了解决办法: 这似乎是 EF Core 1.1

中的错误

我更改了迁移文件。

可以在此处找到有关此的更多信息:https://thisworksonmymachine.com/2017/02/13/ef-core-the-setup-part-4/

操纵迁移总是一个冒险的想法... 如果可能的话,最简单的方法是清理石板: 从 DBContext 中取出 table(这将删除 table) 创建迁移并更新数据库 在上下文中恢复 table 并进行更改。 创建迁移并更新数据库。

显然,您需要考虑数据的备份和恢复以及约束...

以下解决方案并不适用于所有人。即,如果您在多个环境中建立了数据库。

如果您不关心您的迁移,只需从头开始删除所有迁移。然后用你的新模式重新创建第一个。应该可以正常工作。

在尝试获取 IdentityServer4 EF 迁移 (SQLServer) 时,我遇到了同样的问题。将 Microsoft.EntityFrameworkCore 更新到 v2.1.3 和 Microsoft.EntityFrameworkCore。工具到 v2.1.3 似乎解决了这个问题。