You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在EF Core Fluent API中设置非1的自增步长

解决EF Core Fluent API设置标识列自增步长的问题

要实现SQL中my_id int IDENTITY(1,2)的效果,仅用ValueGeneratedOnAdd()是不够的——它只是标记列值由数据库生成,但并未指定标识的起始值和步长。根据你使用的EF Core版本,可采用以下两种方法:

EF Core 7.0及以上版本

直接使用SQL Server专属的UseIdentityColumn扩展方法,明确指定起始值和步长:

builder.HasKey(m => m.MyId);
builder.Property(m => m.MyId)
       .ValueGeneratedOnAdd()
       .UseIdentityColumn(seed: 1, increment: 2);

EF Core 6.0及更早版本

通过HasAnnotation添加SQL Server标识属性的配置:

builder.HasKey(m => m.MyId);
builder.Property(m => m.MyId)
       .ValueGeneratedOnAdd()
       .HasAnnotation("SqlServer:Identity", "1, 2");

注意事项

  • 确保项目已引用Microsoft.EntityFrameworkCore.SqlServer NuGet包,否则上述扩展方法会无法识别。
  • 该配置仅在生成数据库迁移脚本时生效;如果对应表已经创建,需要手动修改数据库列的标识属性,或者生成新的迁移来更新表结构。

内容的提问来源于stack exchange,提问作者DTul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 00:46:03