Why code-first with migrations instead of database-first?

Why migrations? Migrations support a code-first approach, which helps us to base our models on what our application needs not on assumptions about what it needs, to avoid complex mappings and complex auto-generated code, and to focus on the application while leaving data persistence as an implementation detail.

What are the risks of migrations? Migrations can help us to create a poor database design with performance and integrity problems and also to overwrite manual changes to the database schema.

See also: