シーケンス

Note

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