SéquencesSequences

Note

La configuration indiquée dans cette section s’applique aux bases de données relationnelles en général.The configuration in this section is applicable to relational databases in general. Les méthodes d’extension indiquées ici sont disponibles quand vous installez un fournisseur de base de données relationnelle (en raison du package partagé 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).

Une séquence génère des valeurs numériques séquentielles dans la base de données.A sequence generates a sequential numeric values in the database. Séquences ne sont pas associées à une table spécifique.Sequences are not associated with a specific table.

ConventionsConventions

Par convention, les séquences ne sont pas introduits dans pour le modèle.By convention, sequences are not introduced in to the model.

Annotations de donnéesData Annotations

Vous ne pouvez pas configurer une séquence à l’aide des Annotations de données.You can not configure a sequence using Data Annotations.

API FluentFluent API

Vous pouvez utiliser l’API Fluent pour créer une séquence dans le modèle.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; }
}

Vous pouvez également configurer des aspects supplémentaires de la séquence, telles que son schéma, une valeur de début et un incrément.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);
    }
}

Une fois une séquence est introduite, vous pouvez l’utiliser pour générer des valeurs pour les propriétés dans votre modèle.Once a sequence is introduced, you can use it to generate values for properties in your model. Par exemple, vous pouvez utiliser des valeurs par défaut pour insérer la valeur suivante à partir de la séquence.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; }
}