Bem, essas anotações de dados devem fazer o truque, talvez seja algo relacionado ao provedor PostgreSQL.
Da documentação do EF Core:
Dependendo do provedor de banco de dados usado, os valores podem ser gerados do lado do cliente pelo EF ou no banco de dados. Se o valor for gerado pelo banco de dados, o EF poderá atribuir um valor temporário quando você adicionar a entidade ao contexto. Este valor temporário será substituído pelo valor gerado pelo banco de dados duranteSaveChanges
.
Você também pode tentar com esta configuração da Fluent Api:
modelBuilder.Entity<Foo>()
.Property(f => f.Id)
.ValueGeneratedOnAdd();
Mas como eu disse anteriormente, acho que isso é algo relacionado ao provedor de banco de dados. Tente adicionar uma nova linha ao seu banco de dados e verifique depois se foi gerado um valor para o
Id
coluna.