There are many Umbraco systems for code-first approachs for Umbraco entity management, but they tend to be more about CRUD over these entities.
uMigrate is a code-first entity upgrade framework that enables you to code versioned migrations for automated ForwardsOnly releases.
We initially developed this to help us control how we remap and refactor content that was specific to Umbraco 4 extensions that needed to be re-thought in Umbraco 7 - like conversions from extensions like uComponents to Archetype. Similar to automated database migration frameworks like FluentMigrator we found that in Umbraco there were equivalent factors / paradigms to consider:
We still use uSync, but is configured to kick-in after migration.
Full detail is available on: https://github.com/AffinityID/uMigrate/.
There're two nuget packages;
Use https://www.nuget.org/packages/uMigrate.Core/ if you don't need Umbraco UI visiblity (e.g. you have migrations in a separate dll).
Of course there're other ways to do upgrades (see http://our.umbraco.org/documentation/installation/upgrading/v7-upgrade, http://our.umbraco.org/projects/developer-tools/cmsimport & http://our.umbraco.org/projects/developer-tools/umport), but this is more suited to implementations where you want to avoid manual CMS alterations after or during your release cycle and want to ensure your NodeIds or MediaIds are maintained throughtout.
Remember it's a framework for how to describe and manage your upgrades, not a one-stop auto-upgrade umbraco version X to Y system. Because it can't read your mind, you still need to specify the mapping yourself.