序列Sequences

备注

序列是通常仅由关系数据库支持的功能。 如果使用的是非关系数据库(如 Cosmos),请查看数据库文档以生成唯一值。

序列将在数据库中生成唯一的顺序数值。 序列不与特定表相关联,并且可以将多个表设置为从同一序列中绘制值。

基本用法Basic usage

您可以在模型中设置一个序列,然后使用它来生成属性值:

  1. protected override void OnModelCreating(ModelBuilder modelBuilder)
  2. {
  3. modelBuilder.HasSequence<int>("OrderNumbers");
  4. modelBuilder.Entity<Order>()
  5. .Property(o => o.OrderNo)
  6. .HasDefaultValueSql("NEXT VALUE FOR shared.OrderNumbers");
  7. }

请注意,用于从序列生成值的特定 SQL 是特定于数据库的;上面的示例可在 SQL Server 上运行,但在其他数据库中将失败。 有关详细信息,请参阅特定数据库的文档。

配置序列设置Configuring sequence settings

你还可以配置序列的其他方面,例如其架构、起始值、增量等:

  1. protected override void OnModelCreating(ModelBuilder modelBuilder)
  2. {
  3. modelBuilder.HasSequence<int>("OrderNumbers", schema: "shared")
  4. .StartsAt(1000)
  5. .IncrementsBy(5);
  6. }