シーケンス

シーケンスは、通常、リレーショナル データベースでのみサポートされる機能です。 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);
}