When working with Entity Framework (EF) Code-First, we define our entity model with classes and mappings in code, and the database is generated from the model. When we change the model, we can evolve the database using Migrations.
In the past, I've used more the Database- First approach (rather than the Code First). In the Database-First approach we start to model the database artifacts (tables, views, primary keys, foreign keys, etc.), and then we have the entity model generated from the database.
In the earlier versions, EF didn't support the Code-First approach. Today, EF already supports this approach, and it has been improved in every new version. I decided to try this approach in my current project, and I would like to enumerate some advantages:
However, I also can enumerate some disadvantages
I believe that those more conventional/traditional developers will continue to use the well known Database-First approach. In my case, since I know both approaches, I will support my choice based on context/environment: team and project dimension, type of customer, etc. But now I can say that I'm really confident and confortable with the Code-First approach, and certainly I will use it regularly.