シーケンス
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);
}
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET