シーケンスSequences

注意

このセクションの構成は、一般にリレーショナル データベースに適用されます。The configuration in this section is applicable to relational databases in general. ここで示すように拡張メソッドが使用可能になるリレーショナル データベース プロバイダーをインストールするときに (共有のためMicrosoft.EntityFrameworkCore.Relationalパッケージ)。The extension methods shown here will become available when you install a relational database provider (due to the shared Microsoft.EntityFrameworkCore.Relational package).

シーケンスは、データベースの連続した数値の値を生成します。A sequence generates a sequential numeric values in the database. シーケンスでは、特定のテーブルに関連付けられていません。Sequences are not associated with a specific table.

規則Conventions

慣例により、シーケンスできませんで導入されたモデルにします。By convention, sequences are not introduced in to the model.

データの注釈Data Annotations

データ注釈を使用してシーケンスを構成することがありません。You can not configure a sequence using Data Annotations.

Fluent APIFluent API

Fluent API を使用して、モデルのシーケンスを作成することができます。You can use the Fluent API to create a sequence in the model.

class MyContext : DbContext
{
    public DbSet<Order> Orders { get; set; }

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

public class Order
{
    public int OrderId { get; set; }
    public int OrderNo { get; set; }
    public string Url { get; set; }
}

そのスキーマ、開始値および増分値などのシーケンスの他の側面を構成することもできます。You can also configure additional aspect of the sequence, such as its schema, start value, and increment.

class MyContext : DbContext
{
    public DbSet<Order> Orders { get; set; }

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

シーケンスが導入された後は、モデル内のプロパティの値を生成するのに使用できます。Once a sequence is introduced, you can use it to generate values for properties in your model. たとえば、使用することができます既定値のシーケンスから次の値を挿入します。For example, you can use Default Values to insert the next value from the sequence.

class MyContext : DbContext
{
    public DbSet<Order> Orders { get; set; }

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

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

public class Order
{
    public int OrderId { get; set; }
    public int OrderNo { get; set; }
    public string Url { get; set; }
}