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迁移基本面拾遗