Before we start discussing the Code First approach, it would be a good idea to talk about the application architecture approach being followed. Traditionally, we have designed an application using a bottom-up approach, that is, we used to think about the database first and then used this data-centric approach to build our application on top of it. This approach is still very useful for the applications that are data intensive, or perhaps the database also contains some business logic that is being used by multiple applications. For such applications, if we want to use Entity Framework, we have to use the Database First approach.
Another way (or rather the modern way) of designing applications is using the domain-centric approach (Domain Driven Design). Domain Driven Design is more of a top-down approach, where we start designing our application by thinking in terms of the domain models and entities that are needed to realize our application...