EF Core – Número sequencial customizável.

Criar um número sequencial é simples, mas e se ele tiver que começar de um determinado valor? E se precisar que seja incrementado de outra maneira? Aprenda como fazer!

Utilizar o EF Core facilita muito o processo de desenvolvimento, vamos aprender a configurar uma sequência customizada para evitar configurações extras no BD e deixar mais esta responsabilidade com nossa aplicação.

Neste exemplo vamos supor que possuímos uma classe Pedido e que possui uma propriedade código. Em código nós queremos que esse número inicie em 1000 no banco de dados e que seja incrementado automaticamente de 1 em 1.

O códigos a seguir explicam onde e como fazer esta simples configuração.

Primeiramente configuramos o contexto para criar uma sequencia chamada “MinhaSequencia” que inicia em 1000 e incrementa de 1 em 1.

Na configuração do mapeamento da entidade no EF basta apontar que aquela propriedade vai utilizar uma sequence conhecida:

Basta agora criar a Migration e rodar um “update-database” que estará tudo funcionando perfeitamente.


Caso esteja interessado em conhecer mais sobre Testes, TDD, ASP.NET, DDD, Padrões de Arquitetura e boas práticas de desenvolvimento não deixe de conferir as ementas dos meus cursos:

Vamos continuar a troca de experiências, deixe seu comentário abaixo. Se gostou e concorda com o artigo, compartilhe com seus colegas para transmitirmos o conhecimento para o máximo de pessoas possíveis.

3 ideias sobre “EF Core – Número sequencial customizável.

  1. Pensando em manter as regras no domínio, vê algum problema em passar a geração para o banco? Sei que no banco temos a vantagem de garantir a concorrência out of box, porém estaríamos tirando essa lógica de dentro domínio não?

    • Nesse caso a geração precisa partir de um número personalizado e daí para frente esse número não interfere nos negócios. Se o seu valor depende de alguma regra de negócio ou gera algum impacto na forma que funciona o negócio talvez não seja a alternativa ideal.

  2. Boa noite Eduardo, visualizando esse artigo deparei com uma duvida um pouco mais complexa: A possibilidade de valor gerado ser um DateTime.Now + um numeral sequencial, exemplo hoje seria 20190421001, 20190421002… Assim por diante. Mas que seja resetado no dia seguinte, ou seja, amanhã 20190421001 etc…

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *