Migrations: generate, don't hand-roll
You change the schema by changing the DBO model and then running the EF CLI to generate a migration. You do not hand-write the migration. This is the highest-severity rule in the anti-pattern list (#4, severity 10) because hand-rolled and wrongly-removed migrations produce a snapshot that diverges from the real schema, and that divergence is a production incident.
Try it yourself
Read a generated migration
Confirm what a real, CLI-generated migration looks like so you can tell it from a hand-rolled one.
A file under persistence/Migrations/ with a timestamp prefix, #nullable disable, and Up/Down methods calling migrationBuilder.AddColumn/DropColumn with snake_case table and column names. It reads as generated: no bespoke SQL, no migrationBuilder.Sql(...), symmetric Up/Down.
Changing an unshipped table
A table you added last week is behind a feature flag that's still OFF in test and prod. You now need to change its primary key type. What do you do?