As a fellow .NET C# developer I concluded that EF migrations were rather poorly designed to interface with source control as they store large binary schema data per migration (bad for source control systems) and cause unending grief when trying to merge migrations from multiple GIT branches (bad for team workflow). So I eventually ditched EF migrations and replace them with something much simpler that would also work with both GIT merges and our DBAs (who only cared for SQL).
I chose the FOSS app MyBatis / Migrate that works with any JDBC supported SQL engine. I've used it with SQL Server, MySQL and Oracle (not Postgres yet). I've also used it with C# / EF projects (I just stopped using EF's migrations). It's a no-brainer so great for novice coders. No dependencies so ok to use for any SQL database project with any application language. Since it's pure SQL you can leverage features specific to your SQL dialect (e.g. In MySQL, you can add a new column after any existing column using the MySQL specific AFTER clause rather than be forced to add it at the end of the table).
You just create timestamped SQL scripts (using their migrate new command) that contains both forward and rollback SQL code for your schema or data migration. Using filenames prefixed with timestamps (instead of version numbers) means your software teams can easily create and later merge multiple migrations files from different git branches - too easy! They just get combined and applied to the database as part of a single release. If you do need to perform complex data migrations you can either code a stored procedure OR you can code a Java class as part of a migration (although this won't help your DBAs).
For DBAs who don't want to deal with VS or .NET, you can use the migrate script command to generate either a forward or rollback SQL script that gathers the sequence of migrations to be applied to a given software release.
You can configure multiple database instances (e.g. development, test, stage, prod) and just select which one you want to apply your SQL migration to using the --env option (e.g. --env=stage). In each database instance it creates a CHANGELOG table that tracks the migrations that have been applied.
To get started ... Install Java JDK 8 and then install this app.
Examples:
$ migrate status # Shows migrations applied and "pending" (be applied) to the selected database
$ migrate up 1 # Applies the next migration
$ migrate down 1 # Undo the last migration
$ migrate redo 1 # Undo and apply last migration (handy when developing migrations)
$ migrate up # Applies all pending migrations
$ migrate --env=test status # Show status of the `test` database.
# Emit forward and reverse SQL for a sequence of migrations.
# Just what your DBAs wanted!
$ migrate script 20090804225207 20090804225333 > up.sql
$ migrate script 20090804225333 20090804225207 > down.sql

MyBatis Schema Migrations on YouTube
If you'd prefer to stick with C# code you might want to have a look at Fluent Migrator. It's particularly good for product projects where you need to support multiple database platforms. I've used it project that supported both SQL Server + MS-Access.