C# Entity Framework 迁移,使 ID 自动递增

Posted

技术标签:

【中文标题】C# Entity Framework 迁移,使 ID 自动递增【英文标题】:C# Entity Framework migration, Make ID auto-increment 【发布时间】:2018-11-05 01:32:51 【问题描述】:

我有一个在使用数据库优先方法生成的实体框架上下文中使用的表。

我犯了一个错误,一个表的ID 不是自动递增的。我不确定解决这个问题的最佳方法是什么。

我应该删除表,然后重新生成它吗?

我可以进行迁移以使此 ID 自动递增吗?

还有其他选择吗?

提前致谢

【问题讨论】:

高度取决于您通过 EF 与之交谈的数据库系统。在 SQL Server 中,您不能在创建现有列后将其转换为 IDENTITY 列 - 您必须删除并使用正确的设置重新创建。但其他 RDBMS 可能有其他方法来解决这个问题.... 迁移首先是为了代码。您是在现有数据库或数据库优先 (EDMX) 中使用代码优先吗? romiller.com/2013/04/30/… 【参考方案1】:

如果表是先使用数据库创建的,如果使用它,您可以在 SSMS 中更改它吗?然后在 Visual Studio 中打开 .edmx 文件,右键单击某处的背景并从数据库中选择更新模型。浏览您需要的选项(可能只是刷新表),完成此操作后,您需要保存 .edmx 文件。

【讨论】:

【参考方案2】:

您可以启用代码优先迁移并更新您的数据库:

    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 属性添加到您的 ID 列

    在包管理器控制台中运行此命令以启用迁移:

    Enable-Migrations
    

    使用这些命令更新数据库:

    Add-Migration
    Update-Database
    

    (先运行Add-Migration,再运行Update-Database命令)

【讨论】:

这不会将现有列更改为标识。复杂得多。可能更容易丢弃和重新创建。 romiller.com/2013/04/30/…

以上是关于C# Entity Framework 迁移,使 ID 自动递增的主要内容,如果未能解决你的问题,请参考以下文章

Entity Framework Code First迁移基本面拾遗

Entity Framework Core 迁移命令

Entity Framework Code First 迁移 Migrations

Entity Framework 命令

使用枚举获取Entity Framework迁移错误

与 Entity Framework Core 2.0 的一对零关系