I tend to prefer to hand-roll schema migrations... but I use grate[1] for the most part. That said, I've created similar tooling for different scenarios.

1. https://grate-devs.github.io/grate/

Pretty easy to setup/use in a dev environment as well... see docker-compose.yaml and run/dbup script.

https://github.com/tracker1/FastEndpoints-SqlJobQueues