Essa configuração é gerada automaticamente pelo nosso Entity Framework, que lê nossas entidades e cria as tabelas no banco ;)
Quando definimos (neste capitulo https://cursos.alura.com.br/course/projeto-asp-net-mvc-5-entity-framework/task/5701):
public class Usuario
{
public int Id { get; set; }
[Required]
public string Nome { get; set; }
[Required,EmailAddress]
public string Email { get; set; }
}
Estamos dizendo que nosso Usuario possui um campo Id do tipo inteiro. Nosso Entity Framework, sabendo disso, já cria nossa tabela com um id e valor auto incrementado pois essa é a melhor prática.
Repare que ter um Id que não seja auto incrementado pode dar muito problema pois precisaremos lembrar sempre em que posição o banco parou para adicionar na proxima, respeitando a ordem em que os dados são inseridos!
Se você quiser, pode subir seu projeto no github e me mandar o link aqui que eu dou uma analisada nele pra você =)