序列

注意

時序是一項功能,通常只有關係資料庫才支援。 如果您使用非關係資料庫,例如 Azure Cosmos DB,請檢查資料庫檔案以產生唯一值。

序列會在資料庫中產生唯一的循序數值。 序列未與特定資料表相關聯,而且可以設定多個資料表來繪製相同序列中的值。

基本使用方式

您可以在模型中設定序列,然後使用它來產生屬性的值:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.HasSequence<int>("OrderNumbers");

    modelBuilder.Entity<Order>()
        .Property(o => o.OrderNo)
        .HasDefaultValueSql("NEXT VALUE FOR OrderNumbers");
}

請注意,用來從序列產生值的特定 SQL 是資料庫特定的;上述範例可在 SQL Server 上運作,但在其他資料庫上將會失敗。 如需詳細資訊,請參閱特定資料庫的檔。

設定順序設定

您也可以設定序列的其他層面,例如其架構、開始值、增量等:

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