0
Code first
- Very popular because hardcore programmers don't like any kind of designers and defining mapping in EDMX xml is too complex.
- Full control over the code (no autogenerated code which is hard to modify).
- General expectation is that you do not bother with DB. DB is just a storage with no logic. EF will handle creation and you don't want to know how it does the job.
- Manual changes to database will be most probably lost because your code defines the database.
Database first
- Very popular if you have DB designed by DBAs, developed separately or if you have existing DB.
- You will let EF create entities for you and after modification of mapping you will generate POCO entities.
- If you want additional features in POCO entities you must either T4 modify template or use partial classes.
- Manual changes to the database are possible because the database defines your domain model. You can always update model from database (this feature works quite good).
- I often use this together VS Database projects (only Premium and Ultimate version).
