使用实体框架核心迁移更改主键

问题描述 投票:3回答:4

我试图通过Entity Framework Core Migrations更改表的主键:

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.

我该如何更新数据库?

primary-key entity-framework-core ef-migrations
4个回答
2
投票

我找到了一个解决方案:这似乎是EF Core 1.1中的一个错误

我更改了迁移文件。

有关这方面的更多信息,请访问:https://thisworksonmymachine.com/2017/02/13/ef-core-the-setup-part-4/


2
投票

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


2
投票

如果您不关心过去的迁移,只需从头开始删除所有迁移。然后使用新架构重新创建第一个。应该工作得很好。


1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.