Bene, quelle annotazioni dei dati dovrebbero fare il trucco, forse è qualcosa correlato al provider PostgreSQL.
Dalla documentazione di EF Core:
A seconda del provider di database utilizzato, i valori possono essere generati lato client da EF o nel database. Se il valore è generato dal database, EF può assegnare un valore temporaneo quando aggiungi l'entità al contesto. Questo valore temporaneo verrà quindi sostituito dal valore generato dal database durante SaveChanges
.
Potresti anche provare con questa configurazione di Fluent Api:
modelBuilder.Entity<Foo>()
.Property(f => f.Id)
.ValueGeneratedOnAdd();
Ma come ho detto prima, penso che questo sia qualcosa di correlato al provider di DB. Prova ad aggiungere una nuova riga al tuo DB e controlla in seguito se è stato generato un valore per l'Id
colonna.