The bigger problem is that data can be part of a migration. A diff is far too rudimentary.

If I split a Fullname into FirstName and LastName, a diff will only tell half of the story. In EF Core, you will adjust an Up and a Down generated method to make the change reversible, plus you deal with data transformation there.

So I would love to know how people handle that without an explicit notion of migrations.

Yeah this sort of thing has to be manual, unless you want to roll the dice with an LLM

amen