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.


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.

8 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. Parabéns pelo artigo Eduardo, só me tira uma duvida… se a minha necessidade for gerar um numero sequencial, porém precedido por uma sigla definida pela entidade mãe, por exemplo, a entidade Projeto tem uma ou mais entidades Tarefas relacionadas a ela, e dentro do Projeto tem uma propriedade Sigla com conteúdo “PRJ”. Ao gerar uma tarefa deste projeto o campo sequencial da tarefa deveria ser “PRJ-001”, “PRJ-002”, “PRJ-003” e assim por diante.
    Neste caso, qual abordagem de criação automática seria mais apropriada?
    Muito obrigado

  3. Desta forma eu consigo o ID preenchido no objeto antes do SaveChanges(), ou mesmo com esta nova metodologia, eu ainda preciso chamar o SaveChanges para ter o ID ?

  4. 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 *