SequênciasSequences

Observação

A configuração nesta seção é aplicável a bancos de dados relacionais em geral.The configuration in this section is applicable to relational databases in general. Os métodos de extensão mostrados aqui ficarão disponíveis quando você instalar um provedor de banco de dados relacional (devido ao pacote Microsoft.EntityFrameworkCore.Relational compartilhado).The extension methods shown here will become available when you install a relational database provider (due to the shared Microsoft.EntityFrameworkCore.Relational package).

Uma sequência gera um sequencial valores numéricos no banco de dados.A sequence generates a sequential numeric values in the database. As sequências não são associadas uma tabela específica.Sequences are not associated with a specific table.

ConvençõesConventions

Por convenção, as sequências não sejam introduzidas para o modelo.By convention, sequences are not introduced in to the model.

Anotações de dadosData Annotations

Você não pode configurar uma sequência usando anotações de dados.You can not configure a sequence using Data Annotations.

API fluenteFluent API

Você pode usar a API Fluent para criar uma sequência no modelo.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; }
}

Você também pode configurar os aspectos adicionais da sequência, como seu esquema, o valor inicial e o incremento.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);
    }
}

Depois que uma sequência é introduzida, você pode usá-lo para gerar valores para propriedades em seu modelo.Once a sequence is introduced, you can use it to generate values for properties in your model. Por exemplo, você pode usar valores padrão para inserir o próximo valor da sequência.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; }
}