Compartilhar via


Sequências

Observação

As sequências são um recurso normalmente com suporte para apenas bancos de dados relacionais. Se estiver usando um banco de dados não relacional, como o Azure Cosmos DB, verifique a documentação do banco de dados sobre a geração de valores exclusivos.

Uma sequência gera valores numéricos exclusivos e sequenciais no banco de dados. As sequências não estão associadas a uma tabela específica, e várias tabelas podem ser configuradas para extrair valores da mesma sequência.

Uso básico

Você pode configurar uma sequência no modelo e usá-la para gerar valores para as propriedades:

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

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

Observe que o SQL específico usado para gerar um valor a partir de uma sequência é específico do banco de dados. O exemplo acima funciona no SQL Server, mas falhará em outros bancos de dados. Consulte a documentação específica do seu banco de dados para obter mais informações.

Definição das configurações de sequência

Você também pode configurar aspectos adicionais da sequência, como o esquema, o valor inicial, o incremento, etc:

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