【发布时间】:2021-12-24 19:22:58
【问题描述】:
[Required, Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int AccountNumber { get; set; }
此代码生成主键,其值从 1 开始,依此类推,并以 1 递增。有没有我可以为其提供起始值?
【问题讨论】:
[Required, Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int AccountNumber { get; set; }
此代码生成主键,其值从 1 开始,依此类推,并以 1 递增。有没有我可以为其提供起始值?
【问题讨论】:
为此,最好使用序列而不是 IDENTITY 列,例如:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasSequence<int>("AccountNumbers", schema: "dbo")
.StartsAt(1000)
.IncrementsBy(1);
modelBuilder.Entity<Account>()
.Property(o => o.AccountNumber)
.HasDefaultValueSql("NEXT VALUE FOR dbo.AccountNumbers");
}
对于 IDENTITY,您可以在 Custom Migration 中调用 DBCC CHECKIDENT。
【讨论】: