SQL Server EF Core 3.1具有无标识的标识字段/删除标识增量

ltqd579y  于 2023-01-12  发布在  其他
关注(0)|答案(2)|浏览(85)

关于如何使用Fluent API将列设置为标识列,存在许多问题,其中包括:
.UseIdentityColumn()
然而,我需要相反的东西-主键字段,需要是表标识(对于UPSERTS),然而,我想删除标识规范。
在SSMS中,我可以将标识规范设置为no,但我想看看这在Fluent API中是否可行。
我试过了
编辑以更新-完整代码为:

builder.Entity<ModelClass>().HasKey(x => x.Id);
builder.Entity<ModelClass>()
                .Property(x => x.Id)
                .ValueGeneratedNever()                
                .HasAnnotation("DatabaseGenerated", DatabaseGeneratedOption.None);

因此,ID列仍然需要是表.HasKey(x => x.Id)的键-但没有标识规范
属性Id是一个键,然后被告知不要生成值。对我来说,在SQL Server中表仍然有一个"标识规范"="是",然后设置种子和增量值。

szqfcxe2

szqfcxe21#

1-使用Fluent API更新您的实体,如下所示

entity.HasKey(e => e.Id).HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None);

2-创建新迁移,并确保您的属性在UP方法中新生成的迁移代码中具有以下配置

.Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None)

然后更新数据库

mutmk8jj

mutmk8jj2#

.HasAnnotation(“Npgsql:值生成策略”,Npgsql.实体框架核心.PostgreSQL.元数据. Npgsql值生成策略.串行列)

相关问题